Повлияет ли изменение имени файла на MD5-хэш файла?
89
Только если имя файла было включено в расчет хэша. например, в псевдокоде:
$hash1 = md5(contents of file);
$hash2 = md5(name of file + contents of file);
создаст два отдельных хэша.
Нет, хеш - это только содержимое файла. Вы можете увидеть это в исходном коде
md5sum
и в его реализации MD5 . Вы также можете проверить это, если у вас есть доступ кmd5sum
:источник
В Linux, использующей файловую систему EXT, этого не произойдет, поскольку имя файла не хранится в файле, оно сохраняется в записи каталога (dentry), в которой находится файл, где индексный дескриптор файла затем сопоставляется с именем. Изменение имени файла не повлияет на его md5sum в Linux. В Windows не могу быть уверенным.
источник
md5sum
должен вести себя так, как ожидалось.Если хеш вычисляется из содержимого файла, этого не должно быть.
источник
В ESXi (точно ESXi 5.5) md5sum для одного и того же контента, но разные имена файлов разные. Это наводит меня на мысль, что файловая структура VMFS-5 также включает имя файла. Если нас не беспокоит имя файла, есть ли способ проверить только md5sum содержимого файла? Я не видел никаких вариантов. Какие-либо предложения?
источник
.vmdk
)? В заголовках vmdk есть данные, которые могут зависеть от имени и расположения файла. Как вы переименовали файлы в своем тесте? --- В остальном с точки зрения содержимого файла VMFS является нормальной файловой системой, и содержимое файлов не зависит напрямую от их имен.В ответ на комментарий https://stackoverflow.com/a/14360831/9392847 :
Это работает только в том случае, если один файл является копией другого файла, но не тогда, когда два разных файла с разными именами генерируются с точно таким же содержимым. Я пробовал это:
Оба файла 1test.pdf и 2test.pdf созданы с помощью программы gimp . Один и тот же контент экспортируется дважды с двумя разными именами.
источник
1.md5 рассчитывается на основе двоичного содержимого ФАЙЛА. 2. Имя файла, последнее изменение и т. Д. Все является метаданными. Md5 на самом деле не полагается на метаданные. Я проверил это с помощью следующих шагов, позволяет работать с метаданными "последнего изменения" i) Я создал файл с именем "a.txt", добавил некоторый контент и создал хэш, скажем, хеш "xyz" ii) Затем у меня есть просто добавил пробел в файл и снова вычислил хэш, скажем, он вернул "abc" iii) Я только что удалил свое изменение на шаге (ii), при повторном вычислении хеша я получил начальный хеш ("xyz")
Это означает, что даже если метаданные файла изменены, хеш остается неизменным до тех пор, пока содержимое файла не останется неизменным.
Надеюсь, это поможет.
источник