MD5是32位0-9 a-f组成,那应该会出现重复吧,重复怎么办,是什么结果

MD5是32位0-9 a-f组成,那应该会出现重复吧,重复怎么办,是什么结果

阅读 13.8k
4 个回答

根据鸽笼原理,是散列算法就必然会发生冲撞。

但是工程学认为:错误概率低到一定程度就可以认为是工程可靠的。实际上就连计算机内的数据总线,哪怕加了校验算法,理论上还是会出现不能检出的传输错误。命令硬盘写1但实际写了0的事情是会发生的。但是由于其概率实在过低,所以我们平常也不会认为计算机内的数据传输不可靠。

另外,散列冲撞错误只能放过。(不放过也没什么办法)

补充一下,MD5快速冲撞已经研究出来了(参见:“PS3预测美国大选”)。现在用MD5比较个密码之类的简短文字还可以。但对于有一定字节数的文件数据,请尽快用SHA1等其他算法淘汰MD5。

那应该会出现重复吧,

会重复。

重复怎么办,是什么结果

后果很严重,结果自己承担。


md5 作为一种散列算法(不是加密算法),本质是一种哈希(hash)。

md5 使用在这种场合:

  • 如果两个文件的 md5 不同,那么他们肯定不同
  • 如果两个文件的 md5 相同,那么他们不一定相同

这就是为什么哈希表比链表的查找效率高。

当 md5 相同时,你再用其它算法比较两个文件。

会的,但是一般使用你可以不去管这个碰撞问题。
对于文件,你可以在判断md5值和文件大小,毕竟两个大小一样的文件出现md5值碰撞的概率会更小的多。
听说现在各种云存储大致也用的这种方式进行判断实现秒传的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进