La modifica del nome di un file influirà sull'hash MD5 di un file?


89

La modifica del nome di un file avrà effetto sull'hash MD5 di un file?

Risposte:


31

Solo se il nome del file è stato incluso nel calcolo dell'hash. ad esempio, in pseudo-codice:

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

produrrà due hash separati.


20
La domanda riguarda lo strumento CLI "md5sum", non l'algoritmo in generale.
jameshfisher

206

No, l'hash è solo del contenuto del file. Puoi vederlo nel codice sorgentemd5sum e nella sua implementazione MD5 . Puoi anche testarlo se hai accesso a md5sum:

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

18
Questa dovrebbe essere la risposta. La domanda è contrassegnata con "md5sum".
ingyhere

3
Grazie per la risposta diretta.
Eddie B

Perfetto! Non avevo Linux per provarlo. Ma ho
Stackoverflow

Non è necessario utilizzare Linux per saperlo. Puoi produrre lo stesso risultato su MacOSX o Windows.
Alexandre Mulatinho

1
Nel caso qualcuno stia cercando l'equivalente di Windows come @alexandreMulatinho menzionato: sostituisci md5sum con fciv e cp con copy e funziona allo stesso modo. Se quindi si accede al sottosistema Windows per Linux, gli hash md5sum corrispondono a quelli fciv.
Jake Stevens-Haas

4

In Linux che utilizza il filesystem EXT, non lo farà, poiché un nome di file non è memorizzato in un file, viene memorizzato nella voce di directory (dentry) in cui risiede il file, dove l'inode del file viene quindi mappato a un nome. La modifica del nome di un file non avrà alcun effetto sul suo md5sum in Linux. In Windows, non posso esserne sicuro.


3
Inoltre i file system di Windows non memorizzano il nome del file nel file. Un semplice port di md5sumdovrebbe comportarsi come previsto.
MauganRa

1

Se l'hash viene calcolato dal contenuto del file, non dovrebbe.


4
La domanda riguarda lo strumento CLI "md5sum", non l'algoritmo in generale.
jameshfisher

0

In ESXi (Precisely ESXi 5.5) md5sum sullo stesso contenuto ma nomi di file diversi è diverso. Questo mi porta a credere che la struttura del file VMFS-5 includa anche il nome del file. Se non siamo preoccupati per il nome del file, c'è un modo per controllare solo l'md5sum del contenuto del file? Non vedevo nessuna opzione. Eventuali suggerimenti?


Di quali file stai parlando? Immagini del disco virtuale ( .vmdk)? Nelle intestazioni di vmdk sono presenti dati che potrebbero dipendere dal nome e dalla posizione del file. Come hai rinominato i file nel tuo test? --- In caso contrario, dal punto di vista del contenuto dei file VMFS è un normale file system e il contenuto dei file non dipende direttamente dai loro nomi.
pabouk

-1

In risposta al commento, https://stackoverflow.com/a/14360831/9392847 :

Funziona solo se un file è la copia di un altro file, ma non quando vengono generati due file diversi con nomi diversi con esattamente lo stesso contenuto. Ho provato questo:

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

Entrambi i file 1test.pdf e 2test.pdf vengono creati utilizzando il software gimp . Lo stesso contenuto viene esportato due volte con due nomi diversi.


Ciò significa che il contenuto del file non è esattamente lo stesso ... Il programma deve esportare diversi metadati in ciascuno
Milney

-2

1.md5 viene calcolato in base al contenuto binario del FILE. 2.Nome del file, ultima modifica, ecc. Le cose sono metadati.md5 non si basano realmente sui metadati. L'ho testato con i passaggi seguenti, lavoriamo con i metadati "ultima modifica" i) Ho creato un file chiamato "a.txt" e aggiunto del contenuto e creato un hash diciamo che l'hash è "xyz" ii) Poi ho ho appena aggiunto uno spazio nel file e di nuovo calcolato l'hash diciamo che ha restituito "abc" iii) Ho appena rimosso la mia modifica al passaggio (ii), calcolando nuovamente l'hash ho ottenuto l'hash iniziale ("xyz")

Questo conclude che anche se i metadati del file vengono modificati, l'hash rimane lo stesso finché il contenuto del file rimane inalterato.

Spero che sia d'aiuto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.