我应该使用哪个密码哈希函数?
我正在寻找密码哈希函数,可以陪伴我多年。选择错误的可能是致命的,因为不可能在没有用户登录的情况下升级现有哈希。我应该使用哪个密码哈希函数?
通常建议使用glibc中的bcrypt或sha256-crypt。这些使用 key stretching, 但我不喜欢这个事实,我无法延长以后的伸展。 一个人应该能够跟上摩尔定律。
现在,我正在考虑维基百科链接中的简单算法,以及用于哈希函数的SHA-256。这让我可以继续添加迭代,因为我认为合适。
但是,该算法不是一个标准。因此,我不可能使用LDAP,htaccess等密码散列。
有更好的选择吗?
您应该使用SHA1进行密码散列。但是,除了算法之外,还应该考虑将salt添加到密码中。理想情况下,应该为每个密码创建一个随机盐并与密码一起存储。
这是打败彩虹桌。在此
我可以在此现身,从另一个角度,但如果你说你可能谁也不会登录的时间再长周期呈现很大的风险用户。您允许用户使用相同密码的时间越长,攻击者设法以某种方式获取密码哈希文件的暴力威胁就越大。不要依靠安全防止发生......
散列函数不会过时,所以我想你应该很好地审查这个每年,希望你会让你的用户更改密码比这更频繁。
这一切都取决于您的具体要求,显然,但有一个思考。
一般来说bcrypt或sha256都可以很好地满足要求。
更新:您可以考虑将此查询弹出到security.stackexchange.com,因为这是一个安全管理问题。
一个好的散列的整个想法是,即使有人不抓取散列,他们也不会做反向查找。无论哪种方式,无论您使用什么算法,糟糕的密码都会被破解。糟糕的协议使用良好的哈希也容易受到重播攻击或传递哈希攻击。除了使用哪个散列之外,还有很多其他的东西。 – Marcin 2011-03-31 14:35:54
@Marcin - 忘记反向查找。我正在根据OP查看时间角度。暴力强制发生 - 更好的散列函数使用时间更长,但OP似乎允许很长时间。我同意你的其他观点 - 而目前的想法表明,现在对于大多数目的而言,bcrypt和sha256都是合适的。 – 2011-03-31 14:47:32
为什么不有帐户到期? – Slartibartfast 2011-04-01 02:47:52
不知道很多关于其他约束的问题,它不可能说 - 其应用程序涉及到它们将支持的内容 – symcbean 2011-03-31 12:28:18