一个文件的MD5哈希值在每个系统上是唯一的吗?

3

操作系统、文件系统等是什么?

还有没有哈希值不同的情况?

4个回答

9
一串比特字符串的哈希值在不同操作系统和文件系统中都是相同的。它是对该字符串进行一系列数学运算的结果。
但需要注意的是,这仅适用于完全相同的文件。例如,在Windows上,大多数文本文件使用\r\n作为换行符,而在Linux上通常只有\n。文本文件的编码也可能存在差异。
换句话说,哈希算法可以判断两个文件是否二进制相等,但不能判断它们是否语义相等。
此外,使用MD5时要小心。它已经无法修复。您应该几乎肯定使用更新的算法,例如SHA256。

是的,那就是我的意思。但是当我有一个二进制文件时,无论如何我都是安全的。这正确吗? - Aron Woost

6

MD5是针对特定输入定义明确的。如果文件内容相同,则在各个系统中生成的MD5将相同。

反之则不一定成立-如果两个文件具有相同的MD5散列值,则它们的内容可能不同,尽管这种情况发生的概率非常低。

然而,应该注意到,MD5哈希故意创建了碰撞,因此MD5的加密安全性被认为已经被破解(http://en.wikipedia.org/wiki/MD5#Collision_vulnerabilities)。我不是安全专家,因此我不确定MD5在现实世界中有多容易受攻击。但是,由于还有其他哈希算法可用,如果有选择,则应该使用它们而不是MD5。


1

MD5哈希算法不应该依赖于操作系统和/或文件系统。

MD5哈希仅取决于文件内容...在非常罕见的情况下可能会发生碰撞,例如this


0

MD5是一种算法,这意味着它不依赖于其运行的系统。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接