在Rails 3.1中使用has_secure_password
时,bcrypt会为每个用户的密码随机生成一串盐值。根据这个回答,我了解到盐值与密码哈希值一起存储。是否有可用的方法或属性可以单独访问该盐值,例如用于编写安全cookie?
在Rails 3.1中使用has_secure_password
时,bcrypt会为每个用户的密码随机生成一串盐值。根据这个回答,我了解到盐值与密码哈希值一起存储。是否有可用的方法或属性可以单独访问该盐值,例如用于编写安全cookie?
如果你需要,你可以获取盐和校验和。
gem install bcrypt-ruby
irb
require 'bcrypt'
hash = BCrypt::Password.create 'superpass'
=> "$2a$10$DtjuZD6nJtrBRLEySlSVm.bJyBMhEhVRAeiVk/GjmQdBNf7WhmDWi"
hash.salt
=> "$2a$10$DtjuZD6nJtrBRLEySlSVm."
hash.checksum
"bJyBMhEhVRAeiVk/GjmQdBNf7WhmDWi"
hash == "starbucks"
=> false
hash == "superpass"
=> true
你的盐和校验和将会不同。
def salt @salt ||= BCrypt::Password.new(password_digest).salt end
非常完美! - joanwolk