MD5是32位0-9 a-f组成,那应该会出现重复吧,重复怎么办,是什么结果
会的,但是一般使用你可以不去管这个碰撞问题。
对于文件,你可以在判断md5值和文件大小,毕竟两个大小一样的文件出现md5值碰撞的概率会更小的多。
听说现在各种云存储大致也用的这种方式进行判断实现秒传的。
那应该会出现重复吧,
会重复。
重复怎么办,是什么结果
后果很严重,结果自己承担。
md5 作为一种散列算法(不是加密算法),本质是一种哈希(hash)。
md5 使用在这种场合:
- 如果两个文件的 md5 不同,那么他们肯定不同
- 如果两个文件的 md5 相同,那么他们不一定相同
这就是为什么哈希表比链表的查找效率高。
当 md5 相同时,你再用其它算法比较两个文件。
根据鸽笼原理,是散列算法就必然会发生冲撞。
但是工程学认为:错误概率低到一定程度就可以认为是工程可靠的。实际上就连计算机内的数据总线,哪怕加了校验算法,理论上还是会出现不能检出的传输错误。命令硬盘写1但实际写了0的事情是会发生的。但是由于其概率实在过低,所以我们平常也不会认为计算机内的数据传输不可靠。
另外,散列冲撞错误只能放过。(不放过也没什么办法)
补充一下,MD5快速冲撞已经研究出来了(参见:“PS3预测美国大选”)。现在用MD5比较个密码之类的简短文字还可以。但对于有一定字节数的文件数据,请尽快用SHA1等其他算法淘汰MD5。
到百科温习下算法吧。。
给你找了篇文章,你看看:http://www.educity.cn/rk/prog/No000102.htm
简单的说是有重复几率的,但是在现有条件下你是碰不到的。