我应该使用哪种密码哈希函数?

时间:2011-03-31 10:18:37

标签: security hash passwords

我正在寻找一个可以和我呆在一起多年的密码哈希函数。选错了可能是致命的,因为在没有用户登录的情况下升级现有的哈希是不可能的。

通常建议使用glibc中的bcrypt或sha256-crypt。这些用途 key stretching, 但我不喜欢我以后无法延长拉伸的事实。 一个人应该能够跟上摩尔定律。

现在,我正在考虑维基百科链接中的简单算法,使用SHA-256作为哈希函数。那个允许我按照我认为合适的方式继续添加迭代。

但是,该算法不是标准。因此,我不太可能使用LDAP,htaccess等密码哈希。

有更好的选择吗?

2 个答案:

答案 0 :(得分:0)

您应该使用SHA1进行密码散列。但是,除了算法之外,还应该考虑在密码中添加salt。理想情况下,应为每个密码创建一个随机盐,并与密码一起存储。

这是打败彩虹表。

对此进行了很好的讨论:Non-random salt for password hashes

答案 1 :(得分:0)

我可能会从另一个角度来看这个问题,但如果你说你的用户可能会长时间没有登录,那么这会带来很大的风险。允许用户使用相同密码的时间越长,攻击者无法以某种方式获取密码哈希文件的风险就越大。不要依赖安全防止发生这种情况......

哈希函数不会快速过时,所以我认为你应该每年都很好地审查这个,希望你的用户可以更频繁地更改密码。

显然,这完全取决于你的确切要求,但要考虑一下。

一般来说,bcrypt或sha256可以很好地满足要求。

更新:您可以考虑将此查询弹出到security.stackexchange.com,因为这是一个安全管理问题。