在转换时,我们是否有可能有类似的md5哈希值具有不同的值? 如果是的话可能吗?你有没有尝试过在MD5之前解密的人?
答案 0 :(得分:7)
暂时忘记md5。相反,想象你的散列函数真的很笨,它只是将源数据中每个字节的值加起来。
现在假设您的源数据只是两个字节:0x01
和0x02
,按此顺序排列。对于这些输入,散列值为3
。
问题是,你可以从许多其他字节序列得到3
的相同答案:
0x01 0x01 0x01
0x00 0x03
0x03
0x02 0x01
...你明白了,希望你也看到,当你拥有的是散列值3
时,不可能确切地知道哪些可能性是原始输入。< / p>
使用md5,算法要复杂得多,并且更好地避免碰撞,但原理是相同的。出于这个原因,它被称为“单向哈希”。
答案 1 :(得分:6)
哈希只是:输入的单向,精简值。许多输入可以产生相同的输出。
是的,不同的源数据可以产生相同的哈希(冲突)。
不,您无法从哈希中检索原始数据。
答案 2 :(得分:3)
如果MD5是salted MD5,那么它很可能永远不会像普通的MD5哈希一样。
答案 3 :(得分:3)
是的,可以使用不同的输入生成1个相同的哈希值。这称为碰撞。这种冲突是可能的,因为输入大小大于输出大小。阅读birthday attack,了解为什么这是散列中的坏事。
here是一篇关于MD5的文章因碰撞而被打破。