使用MD5校验和在多个硬盘上搜索重复文件是否安全?

时间:2014-06-03 18:51:42

标签: python md5 checksum

我的任务是整合来自实验室的大约15年的记录,其中大部分是学生作业或原始数据。我们正在谈论100,000多个人工生成的文件。

我的计划是编写一个Python 2.7脚本,它将映射整个目录结构,为每个目录结构创建校验和,然后标记重复项以进行删除。我预计可能会有10-25%的重复。

我的理解是MD5碰撞在理论上是可能的,但这不太可能,这实际上是一个安全的程序(让我们说如果发生1次碰撞,我的工作将是安全的)。

这是一个安全的假设吗?如果实现很重要,我打算使用的唯一Python库是:

  • hashlib用于校验和;
  • sqlite用于数据处理结果;
  • os用于目录映射

2 个答案:

答案 0 :(得分:8)

偶然在两个文件之间找到md5 collision的概率是:

0.000000000000000000000000000000000000002938735877055718769921841343055614194546663891

受到15公里大小asteroid攻击的概率为0.00000002。我会说是的。

备份文件并对脚本进行测试仍然是一个很好的建议,人为的错误和错误更幸运地发生。

答案 1 :(得分:1)

最近关于MD5冲突的研究可能让你感到困惑,因为在2013年,有些人在普通计算机上给出了在1秒钟内生成MD5冲突的算法,但我向你保证,这并不能使用MD5来检查文件的完整性和重复性。 。您强烈高度不太可能获得具有相同哈希值的两个正常使用文件,除非显然您故意查找问题并使用相同的哈希值放置二进制文件。如果您仍然偏执,那么我建议您使用更大的键空间哈希函数,例如 SHA-512