我应该使用什么哈希算法来存储密码?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我应该使用什么哈希算法来存储密码?相关的知识,希望对你有一定的参考价值。
关于哈希算法优势的最新发展,我真的不及时了。什么是目前存储密码的最佳选择?
另外,腌制和关键拉伸对我有多大安全性?
答案
- MD5 has been broken。
- SHA-1 has significant weaknesses。
- SHA-2目前被认为是足够的。
- SHA-3 will shortly become a FIPS standard。
- 最佳实践是将密码散列与随机salting和键拉伸相结合,例如PBKDF2。
- 一个good discussion on password salting, hashing, and stretching。
- 我的implementation of password salting, hashing, and stretching in C#。
至于散列提供的额外安全性,这取决于您使用的散列迭代次数。举个例子,假设您决定使用2 ^ 14个哈希迭代。这会将密码的熵增加14位。根据摩尔定律,哈希提供的每个额外的熵都意味着在今天同一时间内破解密码大约需要18个月。因此,在今天可以破解原始密码的同时破解迭代哈希之前将是21年(14 x 18个月)。
salting提供的额外安全性是双重的:它阻止了彩虹表的有效使用,并且使得破解大量密码(但不是单个密码)更加耗时。
另一答案
在security.stackexchange上的这个问题是对bcrypt与PBKDF2的良好讨论 - Do any security experts recommend bcrypt for password storage?
关键是单独的散列函数不会阻止预计算攻击(例如彩虹表)。添加盐不会保护您免受字典或暴力攻击。使用bcrypt或PBKDF2比使用哈希算法构建自己的方案要好得多。
以上是关于我应该使用什么哈希算法来存储密码?的主要内容,如果未能解决你的问题,请参考以下文章