我最近阅读了一篇关于password hashing的文章。
如何创建MD5或SHA1哈希,使其无法解密?我认为,它必须是某个FORMULA的字符串(它总是为同一个字符串提供相同的哈希值;因此必须没有随机化)这就是为什么我们应该能够通过相同的FORMULA解密它?或者人们不知道论坛?
答案 0 :(得分:30)
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
维基百科有关于所使用的特定算法的信息:
答案 1 :(得分:4)
一切都是由心理正确解释的,我想再补充一点:
15 Mod 4 = 3
即使你知道公式是
x Mod 4
你不能推断x,因为它可能是3,7,11,15等
我们可以更接近我们的情况并获得行动的结果(就像你有行动和行动描述的结果一样)
x mod 4 = 3
x可以是12,13,14或15,它们不会告诉我们输入的整数。
答案 2 :(得分:0)
我一直认为md5和sha1无法解密并在我的应用程序中使用过。但令我惊讶的是,我找到了一些执行该程序的网站。 见http://www.crypt-security.com/ 因此,此程序不够安全