← 返回首页

11年后,两小时碰撞出相同MD5的头像

发布时间: 2026-02-16 10:53(北京时间)

摘要: 作者回顾了2015年发现的MD5碰撞图片事件,当时两张不同图片因MD5相同导致云盘和笔记应用无法重复上传。通过检索得知这是使用hashclash工具进行选择前缀碰撞攻击的结果,当时在AWS GPU上耗时16小时。11年后,作者亲自尝试用hashclash碰撞自己的微博头像,在树莓派和台式机(WSL环境)上运行,最终i5-13490F仅用142分钟完成碰撞,对比树莓派的缓慢进度,凸显了计算技术的进步。整体语调冷静、叙事性强,带有技术实验的反思。

标签: MD5碰撞, 技术实验, 计算进步, 时间对比, 叙事记录, 冷静, 反思

字数: 1187

原文链接: /7402396589/Qs4o8ucgT

浅记录一下上条微博的来龙去脉。

我记得2015年的时候看到一条微博微博正文“这两张图很有意思,现在 md5 碰撞这么容易了么?”然后附上了某云盘的链接,压缩包里面有两张图,一张叫ship.jpg(Mars shipwreck Baltic Sea),另一张叫plane.jpg(Brian Bews CF-18 crash)。

当时的现象是:其中一张在云盘秒传后再下载就是另一张(取决于最开始最先上传的是哪张)。我也在某联网的笔记应用中试了一下,也是只会储存最开始上传的一张图片。这是因为两张图片的md5是一样的。

在当时我就止步于此了,只知道是因为md5一致所以后上传的因为摘要一致所以不再重复上传。我还以为是谁那么厉害,发现了两张md5一样的图片。

我刚才也重新验证了一下,这两张照片确实有着一模一样的MD5值(图1)。

因为对这两张图片印象深刻,所以在后来的日子里我慢慢了解到md5,才知道当时的两张照片并不是被“发现”的而是碰撞出来的。

花了点时间检索了一下,2015年的这两张图片来源是:natmchugh.blogspot.com/2015/02/create-your-own-md5-collisions.html

当时作者使用的是 hashclash 来进行 Chosen-prefix Collision Attack。15年的时候作者在 AWS GPU 实例上跑了16小时才碰撞出来plane.jpg和ship.jpg这两张图。现在时隔11年,我也想试试 hashclash,说干就干。

图片我选择的是tk老师和我自己的微博头像(180x180小尺寸)。最开始是在M4的Mac上尝试,但是编译过程一直碰壁,所以还是想找个原生的linux环境来跑。想起树莓派还开着机,就打算用树莓派试试。在树莓派上编译hashclash非常顺利,我也很快按照指示开始了“选择前缀碰撞”试验。

但树莓派太慢了,从中午开始,到晚上9点半还没跑完第3层(一共要拼9层)。九点半开始我实在等不住了,决定用台式机进wsl重零开始跑一遍看能不能赶上。紧急在wsl里面编译好并开始碰撞,肉眼可见的快速,不到一会儿就赶上了树莓派的进度。然后就去睡觉了。

醒来后看了下日志,i5-13490F仅用了142分钟就完成了碰撞。而此刻(10:40),我的树莓派还在攻克最后一层,估摸还得算上半小时时间才能完成。(那这样我就有两组成果了w)

上条微博中,tombkeeper_coll.png 和 anya_coll.png 两张图片,分别是tk老师和我的微博头像。这两张图的MD5是完全一致的(图2)。

虽说用hashclash碰撞也有运气成分,但11年过去,原来需要跑16个小时的任务现在也只需要2.4个小时就能完成,也算是看到了科技进步。

image

image