忘了md5一秒钟.相反,想象你的散列函数真的很愚蠢,它只是增加了源数据中每个字节的值.
现在让我们说你的源数据只有两个字节:0x01并按0x02顺序排列.对于这些输入,散列值为3.
问题是,您可以3从许多其他字节序列中得到相同的答案:
0x01 0x01 0x01
0x00 0x03
0x03
0x02 0x01
Run Code Online (Sandbox Code Playgroud)
......你明白了,希望你也看到,当你所拥有的是散列值时,不可能确切地知道哪些可能性是原始输入3.
使用md5,算法更加复杂,并且更好地避免了碰撞,但原理是相同的.出于这个原因,它被称为"单向哈希".