Wird sich das Ändern eines Dateinamens auf den MD5-Hash einer Datei auswirken?

88

Wird das Ändern eines Dateinamens den MD5-Hash einer Datei beeinflussen?

Michael Shnitzer
quelle

Antworten:

31

Nur wenn der Dateiname in die Hash-Berechnung einbezogen wurde. zB im Pseudocode:

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

erzeugt zwei separate Hashes.

Marc B.
quelle
20
Die Frage bezieht sich auf das CLI-Tool "md5sum", nicht auf den Algorithmus im Allgemeinen.
Jameshfisher
205

Nein, der Hash bezieht sich nur auf den Dateiinhalt. Sie können dies in der Quelle fürmd5sum und seiner MD5-Implementierung sehen . Sie können dies auch testen, wenn Sie Zugriff auf md5sum:

$ echo "some arbitrary content" > file1
$ cp file1 file2
$ md5sum file1
f0007cbddd79de02179de7de12bec4e6  file1
$ md5sum file2
f0007cbddd79de02179de7de12bec4e6  file2
$
Jamesfischer
quelle
18
Dies sollte die Antwort sein. Die Frage ist mit "md5sum" gekennzeichnet.
Ingyhere
3
Danke für eine klare Antwort.
Eddie B
Perfekt! Ich hatte kein Linux, um das zu versuchen. Aber ich habe Stackoverflow :)
Faizan
Sie müssen Linux nicht verwenden, um dies zu wissen. Sie können unter MacOSX oder Windows dasselbe Ergebnis erzielen.
Alexandre Mulatinho
1
Falls jemand nach dem Windows-Äquivalent wie @alexandreMulatinho sucht, das erwähnt wurde: Ersetzen Sie md5sum durch fciv und cp durch copy, und es funktioniert genauso. Wenn Sie dann das Windows-Subsystem für Linux eingeben, stimmen die md5sum-Hashes mit den fciv-Hashes überein.
Jake Stevens-Haas
4

Unter Linux, das das EXT-Dateisystem verwendet, wird dies nicht der Fall sein, da ein Dateiname nicht in einer Datei gespeichert ist, sondern in dem Verzeichniseintrag (dentry), in dem sich die Datei befindet, in dem der Inode der Datei dann einem Namen zugeordnet wird. Das Ändern eines Dateinamens hat unter Linux keine Auswirkungen auf seine md5sum. Unter Windows kann ich nicht sicher sein.

GL2014
quelle
3
Auch Windows-Dateisysteme speichern den Dateinamen nicht in der Datei. Ein unkomplizierter Port von md5sumsollte sich wie erwartet verhalten.
MauganRa
1

Wenn der Hash aus dem Dateiinhalt berechnet wird, sollte dies nicht der Fall sein.

Ted Hopp
quelle
4
Die Frage bezieht sich auf das CLI-Tool "md5sum", nicht auf den Algorithmus im Allgemeinen.
Jameshfisher
0

In ESXi (genau ESXi 5.5) ist md5sum bei gleichem Inhalt, aber unterschiedlichen Dateinamen unterschiedlich. Das lässt mich glauben, dass die VMFS-5-Dateistruktur auch den Dateinamen enthält. Wenn wir uns nicht um den Dateinamen kümmern, gibt es eine Möglichkeit, nur die MD5-Summe des Dateiinhalts zu überprüfen? Ich konnte keine Option sehen. Irgendwelche Vorschläge?

Venfah Nazir
quelle
Über welche Dateien sprechen Sie? Images der virtuellen Festplatte ( .vmdk)? In VMDK-Headern gibt es Daten, die vom Dateinamen und Speicherort abhängen können. Wie haben Sie die Dateien in Ihrem Test umbenannt? --- Ansonsten ist VMFS aus Sicht des Dateiinhalts ein normales Dateisystem und der Inhalt von Dateien hängt nicht direkt von deren Namen ab.
Pabouk
-1

Als Antwort auf den Kommentar https://stackoverflow.com/a/14360831/9392847 :

Dies funktioniert nur, wenn eine Datei eine Kopie einer anderen Datei ist, nicht jedoch, wenn zwei verschiedene Dateien mit unterschiedlichen Namen mit genau demselben Inhalt generiert werden. Ich habe das versucht:

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

Beide Dateien 1test.pdf und 2test.pdf werden mit der Gimp- Software erstellt. Der gleiche Inhalt wird zweimal mit zwei verschiedenen Namen exportiert.

Nancy
quelle
Das bedeutet, dass der Dateiinhalt nicht genau gleich ist ... Das Programm muss jeweils unterschiedliche Metadaten exportieren
Milney
-2

1.md5 wird basierend auf dem Binärinhalt der DATEI berechnet. 2.Dateiname, zuletzt geändert usw. Dinge sind Metadaten.md5 sind nicht wirklich auf Metadaten angewiesen. Ich habe dies mit den folgenden Schritten getestet und kann mit "zuletzt geänderten" Metadaten arbeiten. I) Ich habe eine Datei mit dem Namen "a.txt" erstellt und einige Inhalte hinzugefügt und einen Hash erstellt. Sagen wir, Hash ist "xyz". Ii) Dann habe ich Ich habe gerade ein Leerzeichen in die Datei eingefügt und den Hash erneut berechnet. Sagen Sie, er hat "abc" zurückgegeben. iii) Ich habe gerade meine Änderung in Schritt (ii) entfernt. Beim erneuten Berechnen des Hash habe ich den anfänglichen Hash ("xyz") erhalten.

Dies kommt zu dem Schluss, dass der Hash trotz geänderter Metadaten der Datei unverändert bleibt, bis der Dateiinhalt unverändert bleibt.

Ich hoffe es hilft.

Braun
quelle