更改文件名是否会影响文件的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议么?