我想用来has_secure_password
在数据库中存储加密的密码。has_secure_password
如果使用任何形式的盐渍,我在互联网上找不到。如果它使用盐渍,它是如何工作的?任何人都可以为我澄清这一点吗?
蒂斯
我想用来has_secure_password
在数据库中存储加密的密码。has_secure_password
如果使用任何形式的盐渍,我在互联网上找不到。如果它使用盐渍,它是如何工作的?任何人都可以为我澄清这一点吗?
蒂斯
has_secure_password
使用bcrypt-ruby。bcrypt-ruby
自动为您处理盐的存储和生成。一个典型的散列bcrypt-ruby
看起来像这样:$2a$10$4wXszTTd7ass8j5ZLpK/7.ywXXgDh7XPNmzfIWeZC1dMGpFghd92e
. 使用以下函数在内部拆分此哈希:
def split_hash(h)
_, v, c, mash = h.split('$')
return v, c.to_i, h[0, 29].to_str, mash[-31, 31].to_str
end
对于示例哈希,此函数产生:
的==
-functionBCrypt::Password
提取盐并将其应用于传递的字符串:
BCrypt::Password.create('bla') == 'bla' # => true