改变文件名会影响文件的MD5哈希值吗?
不是的,哈希值仅针对文件内容。您可以在md5sum的源代码和其MD5实现中看到这一点。如果您可以访问md5sum
,您也可以进行测试:
$ echo "some arbitrary content" > file1
$ cp file1 file2
$ md5sum file1
f0007cbddd79de02179de7de12bec4e6 file1
$ md5sum file2
f0007cbddd79de02179de7de12bec4e6 file2
$
一般来说,“文件的MD5哈希值”是基于文件内容计算出来的。名称可以随意更改。
$hash1 = md5(file);
// change file name
$hash2 = md5(file);
这两个哈希码将是相同的。
在某些(相当专业的)用例中,文件元数据(名称、时间戳等)是用于计算哈希的数据的一部分。然后
$hash1 = md5(file);
// change file name
$hash2 = md5(file);
会产生两个不同的哈希值。
.vmdk
)吗?在vmdk头文件中,有一些数据可能取决于文件名和位置。你是如何在测试中重命名这些文件的?--- 从文件内容的角度来看,除此之外,VMFS是一个普通的文件系统,文件的内容并不直接取决于它们的名称。 - pabouk - Ukraine stay strongnancy@nancy:~/Documents$ md5sum /home/nancy/Documents/1test.pdf
c5a445b7186dfb220ea79d2001acf3f1 /home/nancy/Documents/1test.pdf
nancy@nancy:~/Documents$ md5sum /home/nancy/Documents/2test.pdf
cefa063abf0c0a9e80b2b75e70100836 /home/nancy/Documents/2test.pdf
文件1test.pdf和2test.pdf均使用gimp软件创建。相同的内容以两个不同的名称导出。
1. md5是基于文件的二进制内容计算的。 2. 文件名、最后修改时间等元数据不会影响md5。我已经通过以下步骤进行了测试,让我们来看看“最后修改”元数据: i) 我创建了一个名为“a.txt”的文件,并添加了一些内容并创建了哈希值,假设哈希值为“xyz”。 ii) 然后我只是在文件中添加了一个空格,再次计算哈希值,假设它返回了“abc”。 iii) 我只是在步骤(ii)中撤消了我的更改,再次计算哈希值,我得到了初始哈希值(“xyz”)
这表明,即使文件的元数据发生了变化,只要文件内容保持不变,哈希值仍然相同。
希望对您有所帮助。