是否有两个具有相同MD5哈希值(表示所谓的“ MD5冲突”)的已知字符串的示例?

评论

Wikipedia中的示例。

mscs.dal.ca/~selinger/md5collision

曾经编写过两个具有相同MD5值的bash脚本,但是仍然做了两个不同的事情。这样做很容易,但是McAfee也会吃掉.zip文件,因为它也存储了原始病毒(您可以创建一个.zip扫描程序,但不能创建一个可以从.zip文件中删除文件的扫描程序,这很la脚)。 >

#1 楼

是的,您可以在MD5碰撞演示中看到两个模块:

产生MD5冲突。

这些块中的每个块都有MD5哈希值79054025255fb1a26e4bc422aef54eb4

评论


$ \ begingroup $
您是否知道2个电子邮件地址会产生相同的MD5哈希?我之所以这样问,是因为我知道Gravatar网站使用MD5作为帐户的标识符(在这里:en.gravatar.com/site/implement/images/java),这是在电子邮件地址上完成的。由于电子邮件地址不受长度限制,因此任何对其进行操作并返回有限字符串的函数都必须发生冲突。
$ \ endgroup $
– Android开发人员
19年7月25日在19:41

#2 楼

只是为了向您展示在MD5上创建碰撞的今天是多么容易:


可以使用Marc Steven的HashClash在AWS上创建碰撞,并且估计费用约为0.65美元碰撞。


这两个图像具有相同的md5哈希值:253dd04e87492e4fc3471de5e776bc3d





如果您想自己进行测试,并且下面的图像没有提供上面显示的MD5哈希,那么您可能需要从下面的原始链接拍摄图像:

参考:http://natmchugh.blogspot .com / 2015/02 / create-your-own-md5-collisions.html

评论


$ \ begingroup $
相同的哈希和主题...
$ \ endgroup $
–马塔斯·维特凯维奇(Matas Vaitkevicius)
16年5月11日在11:37

$ \ begingroup $
当我使用mac终端的基本哈希时,我得到了不同的结果! MD5(image1.jpg)= d37ca5b7a8e39f810bc341616005fd0f MD5(image2.jpg)= 6dbe9c815f73327fd10c3a5b0b3a7498
$ \ endgroup $
– DeyaEldeen
17年7月23日在16:18

$ \ begingroup $
@DeyaEldeen图像可能已被stackexchange更改。顺便说一句,只看图片清楚地表明在某处有碰撞…;-)
$ \ endgroup $
– Flalaven Volken
17年8月16日在9:45

#3 楼

一个新的结果显示了如何生成单个块MD5冲突,包括一个示例冲突:

消息1

消息2

> md5sum message1.bin message2.bin
> 008ee33a9d58b51cfeb425b0959121c9 message1.bin
> 008ee33a9d58b51cfeb425b0959121c9 message2.bin


以前有一个单块碰撞的例子,但没有发布它的技术。

评论


$ \ begingroup $
我也刚刚在eprint上看到了它,也打算发布它,但是你击败了我:)
$ \ endgroup $
–贾拉杰
2012年1月30日18:26

#4 楼

MD5旨在用作加密哈希函数,并且该函数的有用特性之一是其抗冲突性。理想情况下,应该找到与$ 2 ^ {64} $次尝试相当的工作(因为输出大小为$ 128 $位,即有$ 2 ^ {128} $个可能的值)来找到冲突(两个不同的输入散列到相同的输出)。
(实际上,强行强制使用今天几乎在可能的范围内,因此仅此一个原因就是不使用任何小输出的哈希函数(如MD5)的原因。)

结果表明,MD5的抵抗力不是预期的那样,如今,即使使用任意通用前缀和后缀,也相对容易产生更多的冲突。

有一个很好的例子,当有人使用MD5冲突以从认证机构获得伪造的SSL证书。该机构为属于攻击者的域签署了证书,并且攻击者针对同一域生成了另一个证书(针对另一个域),该证书具有相同的哈希值,即具有相同的签名有效。

Don'不要将MD5用于任何依赖于抗碰撞性的应用程序(例如签名)...或完全用于任何新应用程序。立即使用SHA-2(或SHA-3)。

评论


$ \ begingroup $
或使用Blake2b。更快,更安全。
$ \ endgroup $
–黛米
16 Mar 24 '16 at 2:21

$ \ begingroup $
@Demetri虽然可以很容易地证明(在特定的硬件上)更快,但是否有证据证明它更安全(如果速度快两倍,则可能是蛮力攻击的不安全程度的两倍)?最多的分析涉及试图破坏它们的最广泛使用的加密函数,因此,似乎并不总是一个公平的比较。
$ \ endgroup $
–尼克T
16年7月25日在22:12

#5 楼



两个不同的十六进制格式的字符串:

4dc968ff0ee35c209572d4777b721587d36fa7b21bdc56b74a3dc0783e7b9518afbfa200a8284bf36e8e4b55b35f427593d849676da0d1555d8360fb5f07fea2
4dc968ff0ee35c209572d4777b721587d36fa7b21bdc56b74a3dc0783e7b9518afbfa202a8284bf36e8e4b55b35f427593d849676da0d1d55d8360fb5f07fea2


都具有MD5哈希值:

008ee33a9d58b51cfeb425b0959121c9


示例:

> md5sum message1.bin message2.bin
008ee33a9d58b51cfeb425b0959121c9 message1.bin
008ee33a9d58b51cfeb425b0959121c9 message2.bin
> sha1sum message1.bin message2.bin
c6b384c4968b28812b676b49d40c09f8af4ed4cc message1.bin
c728d8d93091e9c7b87b43d9e33829379231d7ca message2.bin



另一个示例(十六进制):

0e306561559aa787d00bc6f70bbdfe3404cf03659e704f8534c00ffb659c4c8740cc942feb2da115a3f4155cbb8607497386656d7d1f34a42059d78f5a8dd1ef
0e306561559aa787d00bc6f70bbdfe3404cf03659e744f8534c00ffb659c4c8740cc942feb2da115a3f415dcbb8607497386656d7d1f34a42059d78f5a8dd1ef


都具有MD5哈希值:

cee9a457e790cf20d4bdaa6d69f01e41



示例1.直接来自Marc Stevens:MD5的单块碰撞,2012年;他用源代码(了本文的备用链接)解释了他的方法。

示例2改编自陶韬和邓国峰:仅使用单个消息块构建MD5冲突,2010年。

请注意,上面的示例是字符串的十六进制表示形式。因此,要对其进行测试,必须将这些十六进制值写入二进制文件,然后如上所述进行比较。

要在shell中进行简单的测试,请检查以下命令中提供的命令:两个不同字符串生成相同的MD5哈希码?

另请参见:什么是输入值最小的MD5冲突?

评论


$ \ begingroup $
对于那些不能斜眼看的人:1中的第18位到最后一个字符是555和d55,而2中是第1行659e744和659e704的中间
$ \ endgroup $
–种族
2014年4月29日14:49



$ \ begingroup $
在这里尝试时,我没有得到相同的哈希值:md5.cz
$ \ endgroup $
–里卡多
2014年5月6日3:52



$ \ begingroup $
为了回应其他人说他们没有获得相同的MD5哈希,该数据为十六进制格式,必须转换为二进制格式。这是PHP中的示例:ideone.com/UyP22Z
$ \ endgroup $
– ub3rst4r
16 Mar 7 '16 at 21:24

$ \ begingroup $
@ ub3rst4r如果您有python,只需键入以下内容:hashlib.md5(bytearray.from_hex(“ STRING HERE”))。digest()
$ \ endgroup $
– Zizouz212
16年8月22日在21:47

$ \ begingroup $
或此工具还支持十六进制输入:decrane.io/md5
$ \ endgroup $
– malejpavouk
17年1月31日在19:47

#6 楼

这是一些其他有趣的例子。其中之一是,两个可下载的可执行文件具有相同的MD5哈希值,但实际上是不同的,并且在运行时会产生不同的(安全)结果! -(

http://www.mscs.dal.ca/~selinger/md5collision/

#7 楼

摘自2005年3月10日的“ Schneier on Security”…

更多哈希函数攻击
这里(1)是一对有效的具有相同签名的X.509证书。所使用的哈希函数是MD5。这是一篇论文(2),展示了一种快速查找MD5冲突的技术:在1.6 GHz的计算机上八个小时。 />http://www.win.tue.nl/~bdeweger/CollidingCertificates/
http://cryptography.hyperlink.cz/md5/MD5_collisions.pdf