读书人

是不是任何文件的md5摘要都是不同的?该

发布时间: 2012-02-05 12:07:14 作者: rapoo

是不是任何文件的md5摘要都是不同的?
看过网上一些文件的发布,后面大都会带一个md5的摘要值,目的好像是为了防止网上传输时发生错误或者被人修改.说当文件改变后,md5的值就会改变.
但为什么很大一个文件,里面很小部分变了,就肯定md5的值会变?
普通md5是128位,那么仅128位的数据就有2^128种可能,而超过16字节的文件多的是,所以md5的值不是仅对应某个一个文件吧,应该是有很多重复的,那文件的正确性怎么能用md5来保证呢?困惑中

[解决办法]
不能保证不同的文件必然有不同的md5摘要,只是两个不同文件有相同摘要的可能性太小了.
而md5算法的复杂性是为了防止某些有心人特意篡改文章后还保持原先的md5摘要,也就是说,只要你修改了某个文件,那么就很难让这个文件保持原先的md5摘要.
我记得去年山东大学一个教授就发表了一个著名的论文,可以通过计算机产生两个不同的数据而有相同的md5摘要.
[解决办法]
如果你用2^128+1个文件去试,那么肯定有相同的,
但为什么很大一个文件,里面很小部分变了,就肯定md5的值会变?
这个问题涉及到md5的算法,简单的可以这样,将文件中的所有字节相加%(2^128),这样也也变呀
因为一定存在相同的md5值,是有人破解了,不过好象要比较多的条件,而且破解的概率也应该不大。

[解决办法]
就算有办法做到产生两个文件有相同的 md5,也无法做到已知 md5 可以生成一个文件符合该 md5,而且该文件的信息恰恰是希望伪造的内容,这种概率基本可以忽略了。

读书人网 >软件架构设计

热点推荐