Чи вплине зміна імені файлу на хеш MD5 файлу?
Чи вплине зміна імені файлу на хеш MD5 файлу?
Відповіді:
Тільки в тому випадку, якщо ім’я файлу було включено до розрахунку хешу. наприклад, у псевдокоді:
$hash1 = md5(contents of file);
$hash2 = md5(name of file + contents of file);
створить два окремих хеші.
Ні, хеш стосується лише вмісту файлу. Ви можете побачити це у джереліmd5sum
та його реалізації MD5 . Ви також можете перевірити це, якщо у вас є доступ до md5sum
:
$ echo "some arbitrary content" > file1
$ cp file1 file2
$ md5sum file1
f0007cbddd79de02179de7de12bec4e6 file1
$ md5sum file2
f0007cbddd79de02179de7de12bec4e6 file2
$
У Linux, що використовує файлову систему EXT, цього не буде, оскільки ім'я файлу не зберігається у файлі, воно зберігається у записі каталогу (дентрі), в якому живе файл, де inode файлу потім відображається на ім'я. Зміна імені файлу не вплине на його md5sum в Linux. У Windows я не можу бути впевненим.
md5sum
повинен поводитися, як очікувалося.
Якщо хеш обчислюється із вмісту файлу, він не повинен.
У ESXi (саме ESXi 5.5) md5sum для одного вмісту, але різні імена файлів відрізняються. Це змушує мене думати, що структура файлу VMFS-5 включає також ім'я файлу. Якщо нас не турбує назва файлу, чи є спосіб перевірити лише вміст файлу md5sum? Я не міг побачити жодного варіанту. Будь-які пропозиції?
.vmdk
)? У заголовках vmdk є дані, які можуть залежати від імені та розташування файлу. Як ви перейменували файли у своєму тесті? --- Інакше з точки зору вмісту файлу VMFS є звичайною файловою системою, і вміст файлів безпосередньо не залежить від їх назв.
У відповідь на коментар 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 . Один і той же вміст експортується двічі з двома різними назвами.
1.md5 розраховується на основі двійкового вмісту ФАЙЛУ. 2.Назва файлу, остання зміна тощо. Це метадані. Md5 насправді не покладаються на метадані. Я протестував це з кроками нижче, дозволяє працювати з "останньо зміненими" метаданими i) Я створив файл з іменем "a.txt" і додав трохи вмісту і створив хеш, скажімо, хеш "xyz" ii) Тоді я маю просто додав пробіл у файл і знову обчислив хеш, сказав, що він повернув "abc" iii) Я просто видалив свою зміну в кроці (ii), при обчисленні хешу знову отримав початковий хеш ("xyz")
З цього випливає, що, незважаючи на те, що метадані файлу змінені, хеш залишається незмінним до тих пір, поки вміст файлу не залишиться незмінним.
Сподіваюся, це допоможе.