微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

bcrypt 如何“知道”给定的哈希值是否与给定的密码相关联?

如何解决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 举报,一经查实,本站将立刻删除。