我正在重写我的密码哈希函数。
它目前使用 sha1。
我正在考虑使用sha512。
我认为 sha512 是 sha2 是否正确?
这是目前散列密码的标准还是我应该使用另一种散列算法?
我正在重写我的密码哈希函数。
它目前使用 sha1。
我正在考虑使用sha512。
我认为 sha512 是 sha2 是否正确?
这是目前散列密码的标准还是我应该使用另一种散列算法?
我建议使用 bcrypt 来散列密码。
这个网站提供了一些关于这个问题的良好背景:http: //codahale.com/how-to-safely-store-a-password/
SHA-2使用四种不同的位大小:
具有 224、256、384 或 512 位摘要的哈希函数。
足以说明 bcrypt 或 SHA-512 是否足够好。答案是肯定的,任何一种算法都足够安全,以至于通过实施缺陷而不是密码分析会发生违规行为。
如果你坚持要知道哪个“更好”,SHA-512 已经被 NIST 和其他人深入研究过。这很好,但已经认识到缺陷,虽然现在无法利用,但已经导致 SHA-3 竞争新的哈希算法。另外,请记住,哈希算法的研究比密码“更新”,密码学家仍在学习它们。
尽管 bcrypt 作为一个整体并没有像 Blowfish 本身那样受到严格的审查,但我相信基于具有易于理解的结构的密码可以为其提供一些基于哈希的身份验证所缺乏的固有安全性。
因此,我对 bcrypt 的推荐源于以下假设:1) SHA-2 系列哈希函数具有更好的审查,以及 2) 密码的密码分析方法比哈希函数的方法开发得更好。