我知道一个好的密码散列算法应该很慢。MD5、SHA256等速度很快。因此,我一直在我的网络应用程序中添加多次 SHA-256 散列迭代(大约 50000)。在我的机器上获取密码的哈希值大约需要 150 毫秒。
bcrypt 比这种方法有什么优势吗?
注意:我知道盐和胡椒。我们不在这里谈论这个。
我知道一个好的密码散列算法应该很慢。MD5、SHA256等速度很快。因此,我一直在我的网络应用程序中添加多次 SHA-256 散列迭代(大约 50000)。在我的机器上获取密码的哈希值大约需要 150 毫秒。
bcrypt 比这种方法有什么优势吗?
注意:我知道盐和胡椒。我们不在这里谈论这个。
插入盐(是的,必须讨论)并同时迭代函数,这比通常出现的要复杂一些。特别是,像 SHA-256 这样的散列函数并不完全是一个“类随机预言”的函数。它展示了一些内部结构。任何自制的构造都可能触及可能出现致命弱点的精细细节之一。
确保你做对了是很困难的,就像构建任何加密算法一样。这就是 bcrypt 比任何自制结构更好的地方:bcrypt 已经发布并投入使用,并且可能在相当长的一段时间内被许多人检查过是否存在缺陷。这基本上是您可以在密码学中获得的唯一硬性安全措施。“不要定义自己的算法”的一般建议也适用于此。
您面临的问题已经解决,是的,您正朝着正确的方向前进:http ://en.wikipedia.org/wiki/PBKDF2