首页 文章

MD5产生碰撞之前有多少随机元素?

提问于
浏览
140

我在Amazon S3上有一个图像库 . 对于每个图像,我md5我的服务器上的源URL加上一个时间戳来获取唯一的文件名 . 由于S3不能有子目录,我需要将所有这些图像存储在一个平面文件夹中 .

我是否需要担心产生的MD5哈希值中的冲突?

额外奖励:在我开始看到MD5产生的哈希值发生冲突之前,我可以拥有多少个文件?

8 回答

  • 7

    虽然由于碰撞导致MD5出现了很好的公开问题,但随机数据之间的UNINTENTIONAL碰撞是exceedingly rare . 另一方面,如果您正在对文件名进行散列,那么这不是随机数据,我希望快速发生冲突 .

  • 17

    它的可能性并不重要;有可能的 . 它可能发生在您散列的前两个事项上(非常不可能,但可能),因此您需要从一开始就支持冲突 .

  • 10

    MD5碰撞极不可能 . 如果您有 9 trillion MD5s,则 9 trillion 中只有一次机会发生碰撞 .

  • 0

    只有两个哈希意外碰撞的可能性是340个十亿分之二十亿二十亿分之366十亿分之一百分之六十六分之一925分别463六十六分之一463分钟374千万亿分之607万亿431亿七千六百六十一万二千一百五十六 .

    但是如果保留所有哈希值,那么由于birthday paradox,概率会更高一些 . 要有任何哈希与任何其他哈希冲突的几率为50%,您需要 264 哈希 . 这意味着平均来说,为了获得冲突,您需要哈希6 billion files per second for 100 years .

  • 0

    S3可以有子目录 . 只需在密钥名称中加上“/”,即可访问这些文件,就好像它们位于不同的目录中一样 . 我使用它来根据用户在S3中的用户ID将用户文件存储在不同的文件夹中 .

    例如:“mybucket / users / 1234 / somefile.jpg” . 它与文件系统中的目录不完全相同,但S3 API具有一些功能,可以使它几乎完全相同 . 我可以要求它列出所有以“users / 1234 /”开头的文件,它会显示该“目录”中的所有文件 .

  • 3

    等等,是吗:

    md5(filename) + timestamp
    

    要么:

    md5(filename + timestamp)
    

    如果是前者,那么你大部分都是通往GUID的,我不会担心它 . 如果是后者,那么请参阅Karg的帖子,了解你最终会如何碰撞 .

  • 24

    碰撞的粗略经验法则是值范围的平方根 . 您的MD5 sig大概是128位长,因此您可能会看到超过2 ^ 64个图像的碰撞 .

  • 258

    虽然随机MD5冲突极为罕见,但如果您的用户可以提供文件(将逐字存储),那么他们可以设计冲突 . 也就是说,他们可以故意创建两个具有相同MD5sum但数据不同的文件 . 确保您的应用程序能够以合理的方式处理这种情况,或者使用像SHA-256这样的更强大的哈希 .

相关问题