理论上来讲,哈希函数把无限的信息映射到有限的空间中,当然会生成重复的MD5值[1],而且,事实上已经有现成的例子了。
比如下面两个二进制串,就是非常经典的例子[2]:
这个:
d131dd02c5e6eec4693d9a0698aff95c2fcab58712467eab4004583eb8fb7f89 55ad340609f4b30283e488832571415a085125e8f7cdc99fd91dbdf280373c5b d8823e3156348f5bae6dacd436c919c6dd53e2b487da03fd02396306d248cda0 e99f33420f577ee8ce54b67080a80d1ec69821bcb6a8839396f9652b6ff72a70
和下面这个:
d131dd02c5e6eec4693d9a0698aff95c2fcab50712467eab4004583eb8fb7f89 55ad340609f4b30283e4888325f1415a085125e8f7cdc99fd91dbd7280373c5b d8823e3156348f5bae6dacd436c919c6dd53e23487da03fd02396306d248cda0 e99f33420f577ee8ce54b67080280d1ec69821bcb6a8839396f965ab6ff72a70
它们都有着共同的MD5值:
79054025255fb1a26e4bc422aef54eb4
国内关于MD5的研究,主要是由王小云院士完成的,王小云院士多年来主要从事密码理论及相关数学问题的研究工作,提出了密码哈希函数的碰撞攻击理论,并实践破解了一部分国际通用哈希函数算法,学术成果诸多。
在2004年的国际密码讨论年会(CRYPTO)上,王小云及其研究同事展示了MD5、SHA-0及其他相关散列函数的散列冲撞,更多内容可以阅读这个回答:
有一个关于此类碰撞的可视化平台[3] ,以及分析网站[4],可以去看看。当然了,重复的肯定不止这个,还有许多[5],我只是举个简单的例子来说明一下此类碰撞的不可避免性。