Повлияет ли изменение имени файла на MD5-хеш файла?


Ответы:


31

Только если имя файла было включено в расчет хэша. например, в псевдокоде:

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

создаст два отдельных хэша.


20
Вопрос касается инструмента командной строки «md5sum», а не алгоритма в целом.
jameshfisher

206

Нет, хеш - это только содержимое файла. Вы можете увидеть это в исходном кодеmd5sum и в его реализации MD5 . Вы также можете проверить это, если у вас есть доступ к md5sum:

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

18
Это должен быть ответ. Вопрос помечен как «md5sum».
ingyhere 05

3
Спасибо за прямой ответ.
Eddie B

Отлично! У меня не было Linux, чтобы попробовать это. Но у меня есть Stackoverflow :)
Файзан

Вам не нужно использовать Linux, чтобы знать это. Вы можете добиться того же результата в MacOSX или Windows.
Александр Мулатиньо

1
В случае, если кто-то ищет эквивалент Windows, например, упомянутый @alexandreMulatinho: замените md5sum на fciv и cp на копию, и он будет работать точно так же. Если вы затем войдете в подсистему Windows для Linux, хеши md5sum будут соответствовать хешам fciv.
Джейк Стивенс-Хаас

4

В Linux, использующей файловую систему EXT, этого не произойдет, поскольку имя файла не хранится в файле, оно сохраняется в записи каталога (dentry), в которой находится файл, где индексный дескриптор файла затем сопоставляется с именем. Изменение имени файла не повлияет на его md5sum в Linux. В Windows не могу быть уверенным.


3
Также файловые системы Windows не хранят имя файла в файле. Простой порт md5sumдолжен вести себя так, как ожидалось.
MauganRa

1

Если хеш вычисляется из содержимого файла, этого не должно быть.


4
Вопрос касается инструмента командной строки «md5sum», а не алгоритма в целом.
jameshfisher

0

В ESXi (точно ESXi 5.5) md5sum для одного и того же контента, но разные имена файлов разные. Это наводит меня на мысль, что файловая структура VMFS-5 также включает имя файла. Если нас не беспокоит имя файла, есть ли способ проверить только md5sum содержимого файла? Я не видел никаких вариантов. Какие-либо предложения?


О каких файлах вы говорите? Образы виртуальных дисков ( .vmdk)? В заголовках vmdk есть данные, которые могут зависеть от имени и расположения файла. Как вы переименовали файлы в своем тесте? --- В остальном с точки зрения содержимого файла VMFS является нормальной файловой системой, и содержимое файлов не зависит напрямую от их имен.
pabouk

-1

В ответ на комментарий https://stackoverflow.com/a/14360831/9392847 :

Это работает только в том случае, если один файл является копией другого файла, но не тогда, когда два разных файла с разными именами генерируются с точно таким же содержимым. Я пробовал это:

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

1.md5 рассчитывается на основе двоичного содержимого ФАЙЛА. 2. Имя файла, последнее изменение и т. Д. Все является метаданными. Md5 на самом деле не полагается на метаданные. Я проверил это с помощью следующих шагов, позволяет работать с метаданными "последнего изменения" i) Я создал файл с именем "a.txt", добавил некоторый контент и создал хэш, скажем, хеш "xyz" ii) Затем у меня есть просто добавил пробел в файл и снова вычислил хэш, скажем, он вернул "abc" iii) Я только что удалил свое изменение на шаге (ii), при повторном вычислении хеша я получил начальный хеш ("xyz")

Это означает, что даже если метаданные файла изменены, хеш остается неизменным до тех пор, пока содержимое файла не останется неизменным.

Надеюсь, это поможет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.