假设我使用带有Bcrypt
前缀的$2y$
设置了一组密码。现在我正在使用elixir访问我的网站。因此我使用Comeonin作为密码哈希库,我使用以下功能passwords
检查我的旧Comeonin.Bcrypt.checkpw("hard to guess", stored_hash)
,我收到Argument
错误,如Comeonin Bcrypt does not support the 2y prefix
,我该如何验证使用密码?
答案 0 :(得分:0)
$2y$
与“真实” bcrypt散列相同。
如果您的书架不了解$2y$
,则替换无害:
hash = StringReplace(hash, '$2y$', '$2a$');
$2y$
前缀是由某个错误的bcrypt库在某处创建的。事实证明,它们生成了不正确的bcrypt哈希。然后在2011年,他们决定更改其库,以使其输出$2y$
作为前缀而不是$2a$
。
版本$2x
,$2y$
不是“较新” 或“更好” 或“更强” 比$2a$
-都一样。