MD5产生碰撞之前有多少随机元素?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MD5产生碰撞之前有多少随机元素?相关的知识,希望对你有一定的参考价值。
我在Amazon S3上有一个图像库。对于每个图像,我md5我的服务器上的源URL加上一个时间戳来获取唯一的文件名。由于S3不能有子目录,我需要将所有这些图像存储在一个平面文件夹中。
我是否需要担心产生的MD5哈希值中的冲突?
额外奖励:在我开始看到MD5产生的哈希值发生冲突之前,我可以拥有多少个文件?
只有两个哈希意外碰撞的可能性是1/2128 which is 1 340 340十亿282十亿366非亿元920 octillion 938 septillion 463 sextillion 463 quintillion 374 quadrillion 607万亿431亿768百万211千456。
但是如果你保留所有哈希值,那么由于birthday paradox,概率会更高一些。要有任何哈希与任何其他哈希冲突的几率为50%,您需要264个哈希值。这意味着平均来说,为了获得冲突,你需要哈希6 billion files per second for 100 years。
S3可以有子目录。只需在密钥名称中加上“/”,即可访问这些文件,就好像它们位于不同的目录中一样。我使用它来根据用户在S3中的用户ID将用户文件存储在不同的文件夹中。
例如:“mybucket / users / 1234 / somefile.jpg”。它与文件系统中的目录不完全相同,但S3 API具有一些功能,可以使它几乎完全相同。我可以要求它列出所有以“users / 1234 /”开头的文件,它会显示该“目录”中的所有文件。
等等,是吗:
md5(filename) + timestamp
要么:
md5(filename + timestamp)
如果是前者,那么你大部分都是通往GUID的,我也不用担心。如果是后者,那么请参阅Karg的帖子,了解你最终会如何碰撞。
碰撞的粗略经验法则是值范围的平方根。您的MD5 sig大概是128位长,因此您可能会看到超过2 ^ 64个图像的碰撞。
虽然随机MD5冲突非常罕见,但如果您的用户可以提供文件(将逐字存储),那么他们可以设计冲突。也就是说,他们可以故意创建两个具有相同MD5sum但数据不同的文件。确保您的应用程序能够以合理的方式处理这种情况,或者使用像SHA-256这样的更强大的哈希。
虽然由于碰撞已经公布了MD5的问题,但随机数据之间的UNINTENTIONAL碰撞是exceedingly rare。另一方面,如果您对文件名进行散列,那么这不是随机数据,我希望快速发生冲突。
MD5碰撞极不可能。如果你有9万亿个MD5,那么9万亿只有一次机会会发生碰撞。
它的可能性并不重要;有可能的。它可能发生在您散列的前两个事项上(非常不可能,但可能),因此您需要从一开始就支持冲突。
以上是关于MD5产生碰撞之前有多少随机元素?的主要内容,如果未能解决你的问题,请参考以下文章