我有很多文件需要分类;可悲的是,有许多文件具有相同的名称但内容不同,并且存在相同的内容但文件名不同。
我正在考虑使用md5sum
为文件生成校验和,但我需要知道 - 两个不同的文件(即不同的内容)是否有可能生成相同的校验和?
如果是,发生的可能性有多大?
是否可以使用两个不同的不相关(即不在同一“系列”中)的校验和程序来生成两个校验和 - 假设两个不同的文件可以为任一校验和程序生成相同的校验和,它永远不会同时发生在两者身上吗?
答案1
两个内容相同但文件名不同的文件:(文件1和文件2):
cat file1
this is a simple file
cat file2
this is a simple file
md5sum file1
7de45bf879db49de7e2eacea23e6c165 file1
md5sum file2
7de45bf879db49de7e2eacea23e6c165 file2
两个内容不同但文件名相同的文件:(文件1和文件1)
cat file1
this is a simple file
cat file1
this is a simple file with extra contents
md5sum file1 #first file1
7de45bf879db49de7e2eacea23e6c165 file1
md5sum file1 #second file1
c7c8f3fd9ddd7a926c31416a69063e4e file1
来自维基百科入口,
然而,现实世界中任何两个不相同的文件不太可能具有相同的 MD5 哈希值,除非它们是专门创建的具有相同的哈希值。
但是,MD5算法有其自身的缺陷。
然而,由于很容易产生 MD5 冲突,创建该文件的人有可能创建具有相同校验和的第二个文件,因此该技术无法防止某些形式的恶意篡改。此外,在某些情况下,校验和不可信(例如,如果它是通过与下载文件相同的通道获得的),在这种情况下,MD5 只能提供错误检查功能:它将识别损坏或不完整的下载,当下载较大的文件时,这种情况变得更有可能。
我建议使用 sha1 来计算校验和,因为使用时产生冲突并不那么容易沙1算法。如您所见,生成 sha1 校验和非常简单这里。