ファイル名を変更すると、ファイルの MD5 ハッシュに影響しますか?
7 に答える
No, the hash is of the file contents only. You can see this in the source for md5sum
and its MD5 implementation. You can also test this if you have access to 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);
2 つのハッシュ コードは同じになります。
一部の (かなり特殊な) ユース ケースでは、ファイル メタデータ (名前、タイム スタンプなど) は、ハッシュの計算に使用されるデータの一部です。それで
$hash1 = md5(file);
// change file name
$hash2 = md5(file);
2 つの個別のハッシュが生成されます。
EXTファイルシステムを使用するLinuxでは、ファイル名はファイルに保存されないため、ファイルが存在するディレクトリエントリ(dentry)に保存され、ファイルのinodeが名前にマップされるため、そうではありません。ファイル名を変更しても、Linux の md5sum には影響しません。Windowsでは、確信が持てません。
ESXi (正確には ESXi 5.5) では、同じ内容でファイル名が異なる md5sum が異なります。これにより、VMFS-5 ファイル構造にはファイル名も含まれていると思われます。ファイル名を気にしない場合、ファイルの内容の md5sum だけを確認する方法はありますか? 選択肢が見えませんでした。助言がありますか?
ハッシュがファイルの内容から計算される場合、そうすべきではありません。
コメントへの応答として、https://stackoverflow.com/a/14360831/9392847 :
これは、1 つのファイルが別のファイルのコピーである場合にのみ機能しますが、異なる名前の 2 つの異なるファイルがまったく同じ内容で生成された場合には機能しません。私はこれを試しました:
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ソフトウェアを使用して作成されます。同じコンテンツが 2 つの異なる名前で 2 回エクスポートされます。