为什么MD5/SHA1密码哈希无法解密?

Dil*_*ral 3 password-hash password-encryption

我最近读了一篇关于密码哈希的文章.

如何创建MD5或SHA1哈希值,使其无法解密?我认为,它必须是某个FORMULA的字符串(它总是为同一个字符串提供相同的哈希值;因此必须没有随机化)这就是为什么我们应该能够通过相同的FORMULA解密它?或者人们不知道论坛?

psy*_*ych 32

MD5和SHA1不是加密算法.它们是散列算法.

这是一种单向公式.在特定字符串上运行MD5或SHA1会产生始终相同的哈希值.无法将函数反转以返回原始字符串.

例如:

15 Mod 4 = 3

即使你知道公式是

x Mod 4

你不能推断x,因为它可能是3,7,11,15等......

显然MD5和SHA1要复杂得多!

在上面的例子中,输入15将总是给你3的答案,但没有人能够推断出原始数字.这确实可以很好地解决多个输入字符串可以提供相同哈希的冲突:

http://en.wikipedia.org/wiki/MD5#Collision_vulnerabilities

维基百科有关于所用特定算法的信息:

http://en.wikipedia.org/wiki/MD5#Algorithm