文件校验和是否会发生冲突?

Can there be collisions in file checksums?

我正在创建一个接受文件作为输入然后对该文件执行某些处理的服务。我想创建文件的校验和,然后检查数据库以查看该文件是否已被处理,然后从那里提取数据而不是重新处理它。

关于这个过程我有几个问题。

1) 我需要担心校验和冲突吗? AKA - 两个文件可以 return 相同的校验和吗?

2) 我打算使用 MD5 来计算散列值 - 有没有更快的方法可以做到这一点?是否有出于其他原因我应该考虑的算法?

1) Do I need to worry about checksum collisions? I'm planning on using MD5 to calculate the has

校验和(例如 crc32)和加密散列之间存在差异。加密散列被设计成抗冲突的。

这意味着使用哈希可能是您的最佳选择。碰撞的概率非常低,可以忽略不计,在数学上仍然高于零。

I'm planning on using MD5 to calculate the hash - are there any faster ways to do this? Are there algorithms I should consider for other reasons?

MD5 速度很快,但不再安全。散列已被破坏,并且有快速方法可以产生多个输入,从而产生相同的散列输出。今天使用的散列标准是 sha-256(除非你使用 md5 作为校验和而不涉及故意冲突,否则你可能没问题。无论如何你应该避免被认为已过时的加密原语)