Czy zmiana nazwy pliku wpłynie na skrót MD5 pliku?

89

Czy zmiana nazwy pliku wpłynie na skrót MD5 pliku?

Michael Shnitzer
źródło

Odpowiedzi:

31

Tylko jeśli nazwa pliku została uwzględniona w obliczeniu skrótu. np. w pseudokodzie:

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

wygeneruje dwa oddzielne skróty.

Marc B.
źródło
20
Pytanie dotyczy narzędzia CLI "md5sum", a nie algorytmu w ogóle.
jameshfisher
206

Nie, skrót dotyczy tylko zawartości pliku. Możesz to zobaczyć w kodzie źródłowymmd5sum i jego implementacji MD5 . Możesz to również przetestować, jeśli masz dostęp do md5sum:

$ echo "some arbitrary content" > file1
$ cp file1 file2
$ md5sum file1
f0007cbddd79de02179de7de12bec4e6  file1
$ md5sum file2
f0007cbddd79de02179de7de12bec4e6  file2
$
jameshfisher
źródło
18
To powinna być odpowiedź. Pytanie jest oznaczone jako „suma md5”.
ingyhere
3
Dzięki za prostą odpowiedź.
Eddie B
Idealny! Nie miałem Linuksa, żeby tego spróbować. Ale mam Stackoverflow :)
Faizan
Nie musisz używać Linuksa, aby to wiedzieć. Możesz uzyskać ten sam wynik na MacOSX lub Windows.
Alexandre Mulatinho
1
Na wypadek, gdyby ktoś szukał odpowiednika systemu Windows, takiego jak @alexandreMulatinho: zamień md5sum na fciv i cp na copy i działa tak samo. Jeśli następnie wejdziesz do podsystemu Windows dla linuxa, skróty sumy md5 pasują do wartości fciv.
Jake Stevens-Haas
4

W Linuksie używającym systemu plików EXT nie będzie, ponieważ nazwa pliku nie jest przechowywana w pliku, jest przechowywana we wpisie katalogu (dentry), w którym znajduje się plik, gdzie i-węzeł pliku jest następnie odwzorowywany na nazwę. Zmiana nazwy pliku nie będzie miała wpływu na jego sumę md5 w systemie Linux. W systemie Windows nie mam pewności.

GL2014
źródło
3
Również systemy plików Windows nie przechowują nazwy pliku w pliku. Prosty port md5sumpowinien zachowywać się zgodnie z oczekiwaniami.
MauganRa
1

Jeśli hash jest obliczany na podstawie zawartości pliku, nie powinien.

Ted Hopp
źródło
4
Pytanie dotyczy narzędzia CLI "md5sum", a nie algorytmu w ogóle.
jameshfisher
0

W ESXi (dokładnie ESXi 5.5) md5sum na tej samej zawartości, ale różne nazwy plików są różne. To prowadzi mnie do przekonania, że ​​struktura pliku VMFS-5 zawiera również nazwę pliku. Jeśli nie martwimy się o nazwę pliku, czy istnieje sposób, aby sprawdzić tylko sumę md5 zawartości pliku? Nie widziałem żadnej opcji. Jakieś sugestie?

Venfah Nazir
źródło
O jakich plikach mówisz? Obrazy dysków wirtualnych ( .vmdk)? W nagłówkach vmdk znajdują się dane, które mogą zależeć od nazwy i lokalizacji pliku. Jak zmieniłeś nazwy plików w swoim teście? --- W przeciwnym razie z punktu widzenia zawartości plików VMFS jest normalnym systemem plików i zawartość plików nie zależy bezpośrednio od ich nazw.
pabuk
-1

W odpowiedzi na komentarz https://stackoverflow.com/a/14360831/9392847 :

Działa to tylko wtedy, gdy jeden plik jest kopią innego pliku, ale nie wtedy, gdy dwa różne pliki o różnych nazwach są generowane z dokładnie taką samą zawartością. Próbowałem tego:

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

Oba pliki 1test.pdf i 2test.pdf są tworzone za pomocą oprogramowania gimp . Ta sama treść jest eksportowana dwukrotnie pod dwoma różnymi nazwami.

Nancy
źródło
Oznacza to, że zawartość pliku nie jest dokładnie taka sama ... Program musi eksportować różne metadane w każdym
Milney,
-2

1.md5 jest obliczana na podstawie binarnej zawartości PLIKU. 2. nazwa pliku, ostatnia modyfikacja itp. Rzeczy są metadanymi. Md5 tak naprawdę nie polega na metadanych. Przetestowałem to w poniższych krokach, pracujmy z metadanymi "ostatnio zmodyfikowanymi" i) Utworzyłem plik o nazwie "a.txt" i dodałem trochę treści i utworzyłem hash, który mówi, że hash to "xyz" ii) Następnie mam po prostu dodałem spację w pliku i ponownie obliczyłem hash powiedz, że zwrócił "abc" iii) Właśnie usunąłem swoją zmianę w kroku (ii), po ponownym obliczeniu hasha mam początkowy hash ("xyz")

Wynika z tego, że pomimo zmiany metadanych pliku, hash pozostaje taki sam, dopóki zawartość pliku nie zostanie zmieniona.

Mam nadzieję, że to pomoże.

brązowy
źródło