如何验证具有$ 2 $ $前缀的Bcrypt密码?

时间:2017-04-04 05:32:31

标签: elixir phoenix-framework bcrypt

假设我使用带有Bcrypt前缀的$2y$设置了一组密码。现在我正在使用elixir访问我的网站。因此我使用Comeonin作为密码哈希库,我使用以下功能passwords检查我的旧Comeonin.Bcrypt.checkpw("hard to guess", stored_hash),我收到Argument错误,如Comeonin Bcrypt does not support the 2y prefix,我该如何验证使用密码?

1 个答案:

答案 0 :(得分:0)

$2y$“真实” bcrypt散列相同。

如果您的书架不了解$2y$,则替换无害:

hash = StringReplace(hash, '$2y$', '$2a$');

$2y$前缀是由某个错误的bcrypt库在某处创建的。事实证明,它们生成了不正确的bcrypt哈希。然后在2011年,他们决定更改其库,以使其输出$2y$作为前缀而不是$2a$

版本$2x$2y$不是“较新” “更好” “更强” $2a$-都一样。