假设我有一个使用SHA-2保存用户密码的系统。现在,我只是在想,如果我取密码的MD5散列,然后计算出MD5哈希结果的SHA-2,这会是一个好方法吗?有复制的机会吗?
发布于 2016-10-25 10:03:50
复制的可能性总是存在的,但大多数情况下,这种可能性相当低(但比你想象的要高,看看生日“悖论”)
散列两次不会带来巨大的额外安全性,它是散列1的安全性+散列2的安全性。
为了提高密码哈希的安全性,您应该对其进行存储,这是给每个密码一个单独的随机字符串,在每次密码被散列时,这将消除预先计算的表(彩虹表)显示密码的威胁。
正如“现在安全”播客中所提到的,多次散列密码没有什么问题,实际上,这是鼓励的,因为如果您想更改密码加密的散列,您不必等待密码再次输入才能使用新哈希散列,您可以使用新哈希散列所有旧散列。这使每个人都能立即获得新哈希的安全性。
我还想指出,MD5和SHA-2是密码的糟糕哈希函数。密码散列函数应该是“慢”的,而MD5被设计为快速(我不知道SHA-2),您应该使用像Argon2、bcrypt、scrypt或PBKDF2这样的函数,这些函数确实很难加速。
发布于 2016-10-25 11:29:27
它没有任何好处,因为散列的目的是将任意大小的数据映射为唯一和不可逆转的固定大小的数据。
有很多MD5冲突的例子,因此您的两条数据,s1和s2,可能会导致相同的MD5哈希,从而导致相同的SHA-2输出。
我不认为这是你想要的。
https://security.stackexchange.com/questions/140797
复制相似问题