更改文件名是否会影响文件的MD5哈希?
答案 0 :(得分:179)
不,哈希只是文件内容。您可以在the source for md5sum
和its MD5 implementation中看到这一点。如果您有权访问md5sum
:
$ echo "some arbitrary content" > file1
$ cp file1 file2
$ md5sum file1
f0007cbddd79de02179de7de12bec4e6 file1
$ md5sum file2
f0007cbddd79de02179de7de12bec4e6 file2
$
答案 1 :(得分:27)
仅当文件的名称包含在哈希计算中时。例如,在伪代码中:
$hash1 = md5(contents of file);
$hash2 = md5(name of file + contents of file);
将产生两个单独的哈希值。
答案 2 :(得分:3)
在使用EXT文件系统的Linux中,它不会,因为文件名没有存储在文件中,它存储在文件所在的目录条目(dentry)中,然后文件的inode被映射到一个名字。更改文件名对Linux中的md5sum没有影响。在Windows中,我无法确定。
答案 3 :(得分:1)
如果根据文件内容计算哈希值,则不应该。
答案 4 :(得分:0)
在ESXi(精确ESXi 5.5)中,相同内容但不同文件名的md5sum不同。这让我相信VMFS-5文件结构也包含文件名。如果我们不关心文件名,有没有办法只检查文件内容的md5sum?我看不到任何选择。有什么建议吗?
答案 5 :(得分:-1)
针对评论,https://stackoverflow.com/a/14360831/9392847:
仅当一个文件是另一文件的副本时才有效,但当生成具有完全相同内容的两个具有不同名称的不同文件时则无效。 我已经尝试过了:
nancy@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 软件创建。相同的内容使用两个不同的名称导出两次。
答案 6 :(得分:-2)
1.md5是基于FILE的二进制内容计算的。 2.文件名,最后修改的东西等都是元数据。md5并不真正依赖元数据。 我已经通过以下步骤对此进行了测试,可以使用“最后修改的”元数据 我)我创建了一个名为“ a.txt”的文件,并添加了一些内容并创建了一个哈希 说哈希是“ xyz” ii)然后我刚刚在文件中添加了一个空格,然后再次计算了哈希值 说它返回“ abc” iii)我刚刚在步骤(ii)中删除了更改,再次计算哈希后,我得到了初始哈希(“ xyz”)
结论是,即使文件的元数据已更改,哈希也保持不变,直到文件内容保持不变。
希望有帮助。