我正在使用名为"bcrypt"的宝石。这是一个Rack应用程序。一旦我创建了一个密码哈希并将其存储在我的数据库中,
我该如何与用户提供的“纯文本”进行比较?
问题在于
# register a user
plain_pass = get_input_from_user
pass_hash = BCrypt::Password.create(params["pass"])
# store in db
# ......
我该如何与用户提供的“纯文本”进行比较?
email = get_user_email
usr = User.first(email: params["email"])
plain_pass = params["pass"]
pass_hash = ?????
if usr.pass_hash == pass_hash
# ok, all good
问题在于
Password.create
每次都会创建一个新的密码,即使输入相同:irb(main):038:0> BCrypt::Password.create("aaa")
=> "$2a$10$CCWMcREb5mP2ldFshb4qiua.VK2ABHXCtDSzj2WwYf/KsZQjoDGoO"
irb(main):039:0> BCrypt::Password.create("aaa")
=> "$2a$10$w9rAu9FmLZ/jQ7IQmXutW.nh272ucS0PsIrMYUMBrDQpt4U70wOqa"
BCrypt::Password.new
。 - Aaron Breckenridge