MD5能否包含自身

2005年的时候,山东大学发现了MD5的安全碰撞漏洞,但当时的碰撞漏洞是基于随机内容的,所以只能用来破解密码(反正密码能用就好,谁管它有没有意义),而很难用来对文件进行数字签名(碰撞出的结果很大的可能是无意义的,这样就很可能修改了被签名文件的格式而导致不可用或很容易被发现)而最近国外的研究人员发布了“可选前缀碰撞”的破解方法,即可以指定内容通过修改附加的后续数据来逼近并达到原MD5的算法。参见:https://code.google.com/p/hashclash/据说利用Amazon的云平台进行计算,一天内可以算出来,成本低于1美金。这个发现很牛,因为这样我们就可以任意替换被签名的文件而不会被发现了(与之前相比,指定前缀可以确保文件格式不变,而内容可以任意修改)题主所问按我的理解应该属于可选后缀的碰撞,即:指定内容,在其前部增加随机数据,使得文件的MD5逐渐逼近并达到指定的值,只是恰好指定内容 = 指定的MD5。遗憾的是,目前还没有人公开发布指定后缀碰撞(或者发布了我不知道,谁知道给我个链接,感谢),可能这种情况并没有实际的利用价值,只是在数学上比较好玩(其实在数学上也比较漂亮,一个数的签名就是它本身,太美了)以上是陈述事实,下面是广告时间,哦,不对,是推测(我没仔细看过算法,如有误导,概不负责):既然指定前缀可以做到,指定后缀应该有很大的概率能做到。推测结束,再次申明对这个推测及题主基于这个推测而进行辛苦的脑力劳动导致死伤脑细胞无保留的不负责。
■网友
难,MD5的复杂度降至2^56次方。在两段不同的文本后面插入并穷举000.。。。0 (56位)至11111.。。1(56位)才能找出相同MD5值的文本。这个不是找两个一样白菜这么简单的。
■网友
理论上是可以的,MD5是一种摘要算法,是固定长度的,MD5的可能性是可以穷举完的而样本是无穷多的,你可以将任何长度的数据进行MD5无穷多就代表穷举不尽,就代表不止有一个文件符合你的要求,而是有无穷多个文件符合你的要求
■网友
MD5算法已经被破了,能够在2^40运算下找到一个碰撞对。但是你要末尾也是MD5码的,有超级计算机的话,你跑跑试试。


    推荐阅读