更改文件名是否会影响文件的MD5哈希?

更改文件名是否会影响文件的MD5哈希?

只有在散列计算中包含文件的名称。 例如用伪代码:

$hash1 = md5(contents of file); $hash2 = md5(name of file + contents of file); 

会产生两个单独的哈希。

不,散列只是文件内容。 您可以在md5sum 及其MD5实现 的源代码中看到这一点。 如果您有权访问md5sum也可以testing它:

 $ echo "some arbitrary content" > file1 $ cp file1 file2 $ md5sum file1 f0007cbddd79de02179de7de12bec4e6 file1 $ md5sum file2 f0007cbddd79de02179de7de12bec4e6 file2 $ 

在使用EXT文件系统的Linux中,它不会,因为文件名不存储在文件中,它存储在文件所在的目录条目(dentry)中,其中文件的inode被映射到名称。 更改文件名将不会影响Linux中的md5sum。 在Windows中,我不能确定。

如果散列值是从文件内容中计算出来的,则不应该这样做。

在相同内容但不同文件名的ESXi(正确ESXi 5.5)md5sum中是不同的。 这使我相信VMFS-5文件结构也包含文件名。 如果我们不关心文件名,有没有办法只检查文件内容的md5sum? 我看不到任何选项。 有什么build议么?