file - 如果文件长度相同,哈希冲突的可能性有多大?

标签 file hash comparison collision

我正在设计一个文件服务器应用程序,我想在其中检查客户端计算机上的缓存文件是否是保存在服务器上的最后一个版本。

我不太相信文件系统中的“更改日期”属性,所以我想比较文件中的实际字节数。

我认为最快的方法(因为通过网络发送所有字节需要一些时间)是将文件长度和哈希字节发送到服务器。然后服务器首先检查文件长度,如果它们匹配,它计算位于服务器上的文件的哈希值,然后检查它是否与客户端计算的相同。

谁能告诉我当文件大小相同时散列冲突的可能性有多大? (我目前使用 MD5 是为了它的速度)。

如果文件大小相同且哈希值相同,我可以假设内容相同吗?

谢谢!

最佳答案

MD5 中的随机冲突是不可能发生的,因此忽略这种可能性几乎肯定是安全的。

然而,MD5 已被证明在加密方面很弱,因此恶意对手可能会故意创建冲突的文件。一个著名的例子是:

On 30 December 2008, a group of researchers announced at the 25th Chaos Communication Congress how they had used MD5 collisions to create an intermediate certificate authority certificate which appeared to be legitimate when checked via its MD5 hash.

Source

关于file - 如果文件长度相同,哈希冲突的可能性有多大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4402864/

相关文章:

ruby - 在 Ruby 中将大散列划分为 N 个较小散列的最有效方法是什么?

performance - 'hash cons' 是什么意思?

java - FileInputStream.available() 返回字节,但 ObjectInputStream.available() 返回 0

python从文件中读取数据

java - java中文件加载完成检查

java - 复合比较运算符有什么意义?

php - 逐个键查找两行数据之间的差异

python - txt 文件使用 .write() python 显示为空白

perl - 从 Perl 中的 2 个不同列表的哈希值获取差异值

python - 具有较小数据集的异常值检测方法