我最近阅读了一篇关于密码哈希的文章。
MD5或SHA1哈希是如何创建的,以至于无法解密??我认为,它必须通过某种公式加密字符串(对于相同的字符串始终给出相同的哈希值;因此不能有随机性),这样我们就应该能够通过相同的公式解密它?还是人们不知道这个公式吗?
我最近阅读了一篇关于密码哈希的文章。
MD5或SHA1哈希是如何创建的,以至于无法解密??我认为,它必须通过某种公式加密字符串(对于相同的字符串始终给出相同的哈希值;因此不能有随机性),这样我们就应该能够通过相同的公式解密它?还是人们不知道这个公式吗?
MD5和SHA1不是加密算法,而是哈希算法。
它们是单向计算公式。对于一个特定字符串运行MD5或SHA1会得到一个始终相同的哈希值。不可能通过反向函数还原出原始字符串。
例如:
15模4等于3
即使你知道公式是
x模4
你也无法推断出x,因为它可以是3、7、11、15等等。
显然,MD5和SHA1要复杂得多!
在上面的例子中,输入15总是会得到3的答案,但没有人能够推断出原来的数字。这很好地引出了冲突问题,即多个输入字符串可能会产生相同的哈希值:
http://en.wikipedia.org/wiki/MD5#Collision_vulnerabilities
维基百科有关于使用的特定算法的信息:
Psych已经正确解释了一切,我想再补充一点:
15 Mod 4 = 3
即使你知道公式是
x Mod 4
你也无法推断出x,因为它可以是3、7、11、15等任何一个数。
我们可以更接近我们的情况,并获取操作结果(就像您有哈希作为操作结果和操作描述一样)
x mod 4 = 3
x可以是12、13、14或15,这并没有告诉我们输入的整数是多少。