如何解决bcrypt 如何“知道”给定的哈希值是否与给定的密码相关联?
给定密码 P
和散列 H
,函数 bcrypt.compare(P,H)
会告诉您 H
是否是 P
的 bcrypt 散列。
问题:bcrypt.compare
如何做到以上几点?这对我来说很神秘,因为 P
可能与许多不同的散列相关联,而 bcrypt
本身似乎没有它为 P
创建的散列的任何“记忆”。
(额外问题:我是否正确地假设上述暗示每个 bcrypt 哈希都与一个密码相关联?或者我错了——一个哈希可能与许多密码相关联?)
解决方法
哈希:
string BCryptHashPassword(password)
{
Byte[] salt = GenerateSomeSalt();
return DoTheHash(password,salt);
}
验证:
Boolean BCryptVerifyPassword(password,expectedHash)
{
Byte[] salt = ExtractSaltFromExpectedHash(expectedHash);
String actualHash = DoTheHash(password,salt);
return (actualHash == expectedHash);
}
它用原始盐再次散列密码,并比较它们。 }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。