has_secure_password是否使用任何forms的salting?
我想使用has_secure_password
在数据库中存储encryption的密码。 我无法在互联网上find如果has_secure_password
使用任何forms的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
对于这个例子散列这个函数产生:
- 版本:2a
- 成本:10
- 盐:$ 2a $ 10 $ 4wXszTTd7ass8j5ZLpK / 7。
- hash:ywXXgDh7XPNmzfIWeZC1dMGpFghd92e
BCrypt::Password
的==
function提取盐并将其应用于传递的string:
BCrypt::Password.create('bla') == 'bla' # => true