校验和有多独特?


11

我有很多文件需要排序;遗憾的是,有许多文件具有相同的名称,但内容不同,并且具有相同的内容,但文件名却不同。

我正在考虑md5sum用于生成文件的校验和,但是我需要知道-两个不同的文件(即不同的内容)是否可能生成相同的校验和?

如果是这样,它发生的可能性有多大?

是否有可能使用两个不同的不相关(即不在同一个“家族”中)校验和程序来生成两个校验和-假设两个不同文件可能为一个校验和程序生成相同的校验和,永远不会一次发生?


2
请记住,md5 / sha2 / etc是数据的哈希,因此将很多信息映射到较小的位空间,因此可能会发生冲突。哈希不是唯一的密钥,如果这是您的目标……我强烈建议您做其他事情。
mdpc

对于文件排序,MD5很好。从crypto.stackexchange.com/a/18337/49945来看,两个不同内容的校验和冲突概率为2 ^ 128中的1,大约为10 ^ 43中的1。真的非常罕见。如果每微秒进行一次比较,则平均每10 ^ 20年就会发生一次碰撞。自大爆炸以来只有大约10 ^ 9年,所以发生碰撞的几率甚至只有一次,从大爆炸到现在每微秒一次的比较仍然只有十分之一。假设有1000亿台并发计算机,那么只有一个人会遇到冲突。
ToolmakerSteve

...虽然尚不清楚为什么对文件进行排序时会使用任何哈希算法。如果有相同名称的文件,则必须通过其他标准来识别它们;例如,文件必须有一些唯一的路径,或者某些存储设备中可能有字节偏移量?这两种方法中的任何一种都是唯一引用文件的更有用的方法。
ToolmakerSteve

Answers:


11

两个文件内容相同,但不同的文件名:文件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

Wiki条目中,

但是,除非专门创建具有相同哈希值的文件,否则现实世界中任何两个不相同的文件都不太可能具有相同的MD5哈希值。

但是,MD5算法有其自身的缺陷。

但是,由于现在很容易产生MD5冲突,因此创建文件的人可以用相同的校验和创建第二个文件,因此该技术无法防止某些形式的恶意篡改。另外,在某些情况下,校验和不能被信任(例如,如果它是从与下载文件相同的通道获得的),在这种情况下,MD5只能提供错误检查功能:它将识别出损坏或不完整的下载,下载较大的文件时,这种可能性更大。

我建议使用sha1计算校验和,因为使用sha1算法时产生冲突并不容易。生产SHA1校验是很容易的,你可以看到在这里


注意:问题是关于文件排序;使用的建议与sha1该任务无关;仅在关注安全性时才重要。
ToolmakerSteve
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.