我正在寻找一个可以和我呆在一起多年的密码哈希函数。选错了可能是致命的,因为在没有用户登录的情况下升级现有的哈希是不可能的。
通常建议使用glibc中的bcrypt或sha256-crypt。这些用途 key stretching, 但我不喜欢我以后无法延长拉伸的事实。 一个人应该能够跟上摩尔定律。
现在,我正在考虑维基百科链接中的简单算法,使用SHA-256作为哈希函数。那个允许我按照我认为合适的方式继续添加迭代。
但是,该算法不是标准。因此,我不太可能使用LDAP,htaccess等密码哈希。
有更好的选择吗?
答案 0 :(得分:0)
您应该使用SHA1进行密码散列。但是,除了算法之外,还应该考虑在密码中添加salt。理想情况下,应为每个密码创建一个随机盐,并与密码一起存储。
这是打败彩虹表。
对此进行了很好的讨论:Non-random salt for password hashes
答案 1 :(得分:0)
我可能会从另一个角度来看这个问题,但如果你说你的用户可能会长时间没有登录,那么这会带来很大的风险。允许用户使用相同密码的时间越长,攻击者无法以某种方式获取密码哈希文件的风险就越大。不要依赖安全防止发生这种情况......
哈希函数不会快速过时,所以我认为你应该每年都很好地审查这个,希望你的用户可以更频繁地更改密码。
显然,这完全取决于你的确切要求,但要考虑一下。
一般来说,bcrypt或sha256可以很好地满足要求。
更新:您可以考虑将此查询弹出到security.stackexchange.com,因为这是一个安全管理问题。