+ -
当前位置:首页 → 问答吧 → md5相同是不是意味着原串也相同?

md5相同是不是意味着原串也相同?

时间:2010-07-06

来源:互联网

本帖最后由 maxxfire 于 2010-07-06 21:08 编辑

两个原串的md5相同,那么原串是不是完全就相同,不存在不同的可能?
哪怕是一点点都不能发生不相同。。

=====================================
加个条件弱化一下,看能不能完全避免MD5不碰撞:
1,两个原串都是有限长,不超过1GB
2,取两个原串的前一半,其MD5不同
3,取两个原串的后一半,其MD5不同
4,取两个原串的全部,其MD5不同

如果满足上面操作,可保证MD5不碰撞? 要是有这样的数学理论证明就好了。。

作者: maxxfire   发布时间: 2010-07-06

8个bit就只能表示2^8种不同的串 ...
16个bit就只能表示2^16 ...
32个bit... 2^16 ...

md5是多少? 128?  那就是2^128种不同的串。

给出2^8+1, 8bit的hash就肯定会冲突。
给出2^16+1, 。。。
给出2^128+1个串, md5肯定会冲突。

虽说是天文数字, 可能性是存在的。

作者: OwnWaterloo   发布时间: 2010-07-06

绝大多数情况可以认为是相同的

作者: cugb_cat   发布时间: 2010-07-06

咳,这种md5指纹也是杯具。。
不过可以人为加强,再做一次SHA比较,多重比较,这样可以认为是完全一致吧。。

作者: maxxfire   发布时间: 2010-07-06



QUOTE:
8个bit就只能表示2^8种不同的串 ...
16个bit就只能表示2^16 ...
32个bit... 2^16 ...

md5是多少? 128 ...
OwnWaterloo 发表于 2010-07-06 20:20



一个bit能描述一个串?

假设串的定义类似于字符串,以若干个连续的byte为一个串。

作者: xyfree   发布时间: 2010-07-06

回复 xyfree

仔细体会。

作者: OwnWaterloo   发布时间: 2010-07-06

md5前段时间已经出现了冲突了。

提醒一下。

作者: ah13k   发布时间: 2010-07-06

也就是说md5并不是你想象中的那么安全了。只不过目前还是不错的。

作者: ah13k   发布时间: 2010-07-06

本帖最后由 hellioncu 于 2010-07-06 22:48 编辑

任何哈希算法都不能保证这一点,只是让你很难根据哈希结果推算出一个源数据

作者: hellioncu   发布时间: 2010-07-06

MD5冲突肯定是有的  正如OwnWaterloo 所说!
如果你的MD5只有8bit 最多2^8只有字符串

一个字符串可以前半部分用md5 后半用别的降低冲突率

但是想完全不冲突  应该是不太可能的,但从数学角度

作者: ubuntuer   发布时间: 2010-07-06

冲突的可能性非常小,如果产生冲突了,建议立即去买彩票。

作者: mirnshi   发布时间: 2010-07-06

,刚去一家公司,我眯着眼睛对总监说 “MD5是不可能冲突的”, 被鄙视了几个月。

作者: peidright   发布时间: 2010-07-07

回复 peidright

强硬派就说:冲突?证明给我看。

作者: mirnshi   发布时间: 2010-07-07