Наскільки унікальні контрольні суми?


11

У мене дуже багато файлів, мені потрібно сортувати; і, на жаль, є багато файлів з однаковою назвою, але різного змісту, і є однаковий вміст з різними іменами.

Я думаю про використання md5sumконтрольних сум для файлів, але мені потрібно знати - чи можливо два різних файли (тобто різний вміст) генерують одну і ту ж контрольну суму?

Якщо це так, наскільки ймовірним це станеться?

Чи можна було б використовувати дві різні неспоріднені (тобто не в одній "сім'ї") контрольні суми для створення двох контрольних сум - за умови, що хоча два різних файли можуть генерувати одну і ту ж контрольну суму для будь-якої з контрольних сум, це ніколи не трапиться обом одразу?


2
Пам'ятайте, що md5 / sha2 / і т.д. є HASH даних, таким чином, відображаючи багато бітів інформації на менший бітовий простір, таким чином, можливо, можуть виникнути зіткнення. HASH - це не унікальний ключ, і якщо це ваша мета ... Я настійно рекомендую зробити щось інше.
mdpc

Для сортування файлів MD5 чудово. З crypto.stackexchange.com/a/18337/49945 ймовірність зіткнення контрольної суми двох різних вмісту становить 1 на 2 ^ 128, що становить приблизно 1 на 10 ^ 43. Це дійсно, дуже рідко. Якщо ви зробите одне порівняння за мікросекунду, то в середньому у вас буде зіткнення раз на 10 ^ 20 років. Його минуло приблизно 10–9 років з часу Великого вибуху, тож шанси зіткнення, що трапляються ВІД ОДНОГО ВРЕМЯ, за одного порівняння за мікросекунду від Великого вибуху до цих пір досі залишаються лише 1 на 10 ^ 11. Враховуючи сто мільярдів одночасних комп’ютерів, тільки ~ один би ще не бачив зіткнення.
ToolmakerSteve

... хоча незрозуміло, чому б ви використовували будь-який хеш-алгоритм при сортуванні файлів. Якщо є файли з однаковою назвою, їх потрібно ідентифікувати за іншими критеріями; наприклад, має бути якийсь унікальний шлях до файлу, або, можливо, зміщення байтів у якомусь пристрої зберігання даних? Будь-який із них був би більш корисним способом однозначного звернення до файлу.
ToolmakerSteve

Відповіді:


11

Два файли з однаковим вмістом, але різними іменами: ( file1 та file2 ):

cat file1
this is a simple file

cat file2
this is a simple file

md5sum file1
7de45bf879db49de7e2eacea23e6c165  file1
md5sum file2
7de45bf879db49de7e2eacea23e6c165  file2

Два файли з різним вмістом, але однакові імена файлів: ( file1 та file1 )

cat file1
this is a simple file
cat file1
this is a simple file with extra contents
md5sum file1 #first file1
7de45bf879db49de7e2eacea23e6c165  file1
md5sum file1 #second file1
c7c8f3fd9ddd7a926c31416a69063e4e  file1

З вікі- запису,

Однак малоймовірно, що будь-які два неідентичні файли в реальному світі матимуть один і той же хеш MD5, якщо вони спеціально не створені для того самого хеша.

Але алгоритм MD5 має свої вади.

Однак тепер, коли легко генерувати зіткнення MD5, особа, яка створила файл, може створити другий файл з тією ж контрольною сумою, тому ця методика не може захистити від деяких форм зловмисного підробки. Крім того, у деяких випадках контрольній сумі не можна довіряти (наприклад, якщо вона отримана на тому ж каналі, що і завантажений файл), і в такому випадку MD5 може забезпечити функцію перевірки лише помилок: вона визнає пошкоджену або неповну завантаження, що стає більш імовірним при завантаженні великих файлів.

Я рекомендую використовувати sha1 для обчислення контрольної суми, оскільки створювати зіткнення не так просто при використанні алгоритмів sha1 . Виготовити контрольну суму sha1 досить просто, як ви можете бачити тут .


ПРИМІТКА: питання стосується сортування файлів; рекомендація щодо використання sha1не стосується цього завдання; це має значення лише тоді, коли турбується про безпеку .
ToolmakerSteve
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.