bcrypt 与 SHA-x/MD5 的多次迭代相比有什么优势吗?

信息安全 密码学 密码 哈希
2021-09-09 11:32:15

我知道一个好的密码散列算法应该很慢。MD5、SHA256等速度很快。因此,我一直在我的网络应用程序中添加多次 SHA-256 散列迭代(大约 50000)。在我的机器上获取密码的哈希值大约需要 150 毫秒。

bcrypt 比这种方法有什么优势吗?

注意:我知道盐和胡椒。我们不在这里谈论这个。

2个回答

插入盐(是的,必须讨论)并同时迭代函数,这比通常出现的要复杂一些。特别是,像 SHA-256 这样的散列函数并不完全是一个“类随机预言”的函数。它展示了一些内部结构。任何自制的构造都可能触及可能出现致命弱点的精细细节之一。

确保你做对了是很困难的,就像构建任何加密算法一样。这就是 bcrypt 比任何自制结构更好的地方:bcrypt 已经发布并投入使用,并且可能在相当长的一段时间内被许多人检查过是否存在缺陷。这基本上是您可以在密码学中获得的唯一硬性安全措施。“不要定义自己的算法”的一般建议也适用于此。

您面临的问题已经解决,是的,您正朝着正确的方向前进:http ://en.wikipedia.org/wiki/PBKDF2