Thi*_*ijs 67 encryption passwords ruby-on-rails salt
我想用来has_secure_password在数据库中存储加密的密码.如果has_secure_password使用任何形式的腌制,我在互联网上找不到.如果它使用盐腌,它是如何工作的?谁能为我澄清一下这个?
泰斯
fab*_*abi 87
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
Run Code Online (Sandbox Code Playgroud)
对于示例哈希,此函数产生:
提取盐的==函数BCrypt::Password并将其应用于传递的字符串:
BCrypt::Password.create('bla') == 'bla' # => true
Run Code Online (Sandbox Code Playgroud)