使用MD5校验和在多个硬盘搜索重复文件是否安全?
我被分配了一个任务,要把大约15年的实验室记录整合起来,这些记录大部分是学生的作业或者原始数据。总共有超过10万个人工生成的文件。
我的计划是写一个Python 2.7的脚本,来映射整个文件夹的结构,为每个文件创建一个校验和,然后标记重复的文件以便删除。我预计大约有10%到25%的文件是重复的。
我了解到,理论上MD5校验和碰撞是可能发生的,但几乎不太可能,所以这个过程基本上是安全的(可以说如果发生一次碰撞,我的工作还是安全的)。
这是一个安全的假设吗?如果实现方式很重要的话,我打算使用的Python库有:
hashlib
用于生成校验和;sqlite
用于存储结果;os
用于映射文件夹结构。
2 个回答
1
最近关于MD5碰撞的研究可能让你感到困惑,因为在2013年,有人提出了可以在普通电脑上用1秒钟生成MD5碰撞的算法。不过我可以告诉你,这并不意味着MD5就不能用来检查文件的完整性和重复性。实际上,两个正常使用的文件产生相同的哈希值的可能性是非常小的,除非你故意去找麻烦,或者使用了相同哈希值的二进制文件。如果你还是觉得不安,那我建议你使用更大的哈希函数,比如SHA-512。