为什么有很多使用MD5算法的重复文件查找器应用程序?在硬盘,闪存驱动器或任何其他存储设备中搜索重复文件方面,MD5有何优势?

#1 楼

MD5可以正常使用,因为在这种情况下通常不使用密码攻击。
MD5意外碰撞的可能性比软错误的通常可能性要小得多。有关详细信息,请阅读更多信息。


MD5当前被认为太弱而无法用作加密哈希。但是,对于所有传统的(即非加密的)哈希,使用MD5通常都很好。哈希。根据使用的哈希函数,此用例中的性能差异很大。

针对MD5的实际攻击主要是针对抗碰撞性。如果这些都不是问题,那么MD5可能还不错。 (请参阅前面的问题,对MD5进行第二次映像前攻击是否可行?。)例如,许多人认为MD5不错的地方是HMAC-MD5。回到这个问题。可以假设查找重复文件不是一个具有抗冲突性的问题(您可能没有$ 2 ^ {64} $文件),因此发生冲突的机会比假定的许多密码使用要小得多。因此,对于通常的哈希使用,MD5(128位)的空间足够大。通常情况下发生碰撞的概率足够小,例如,由于随机硬件故障(例如软错误)而检测出虚假重复的概率就大得多。如果传入2 ^ 32组字符串,md5冲突的概率是多少?这适用于用户少于40亿个文件的情况,您可以将公式用于其他值。一百万个文件给出了$ 2 ^ {-89} $,我认为这很小。考虑到所有文件大小,比查找MD5更为有效的查找重复文件。大小不同的文件不能重复。仅具有非唯一大小的文件需要散列。如果使用哈希的文件重复程序希望免受MD5哈希冲突的影响,则该程序可能希望执行逐字节比较以确保文件唯一。

评论


$ \ begingroup $
另外:对于重复数据删除,我们可以在重复数据删除实用程序初始化时使用具有秘密初始状态(或哈希文件的32字节前缀)的MD5进行随机复制。现在,尽管MD5有已知的弱点,但不知道秘密的人无法用相同的哈希值准备两个不同的文件。注意:如果对手可以检查哈希,最好使用成熟的HMAC-MD5,效率几乎一样。
$ \ endgroup $
–fgrieu♦
14-10-2在8:11



#2 楼

与其他加密哈希函数相比,MD5占用的CPU更少。例如,SHA1算法比MD5更复杂,这意味着计算效率较低。这可能是使用MD5的原因。

#3 楼

MD5实际上对于用于像Internet这样的WAN而言,对于验证文件的身份是无用的,但是对于在LAN边界内部署MD5的情况下,MD5可以很好地识别重复项或验证文件。数学的工作原理如下:

我们知道,使用MD5时,我们将确定的可能哈希数设置为2 ^ 64。但是,“生日悖论”(即如果我们有366个人,其中两个必须在100%的时间拥有相同的生日),则意味着哈希值会在第二个细分时开始分解,即大于2 ^ 64(或在互联网上流通的唯一文件总数为18,466,744,073,709,551,616,616。

我们从统计信息中得知,在任何给定时间,互联网上平均有32亿人。进行数学运算时,当这32亿人口中的每个人只有8个文件时,哈希表开始中断。因此,这意味着如果互联网上的每个人都有16个文件,则我们有2:2 ^ 64的冲突几率-文件越多,发生冲突的几率就越小-每增加8个文件,冲突的几率越大如果要采用最保守的数值理论,则增加1倍。

评论


$ \ begingroup $
我不知道你刚才怎么说,但是我喜欢它背后的数学,我相信你
$ \ endgroup $
–马丁·兹瓦里克(MartinZvarík)
19年6月9日在22:32



$ \ begingroup $
我想他是说,如果将您的MD5与地球上存在的每个文件的MD5进行比较,则可能会错误地将它们匹配。但是您不打算这样做,所以一切都很好。
$ \ endgroup $
–斯科特·斯塔福德
20-2-27在14:14