LINUX.ORG.RU
ФорумTalks

md5 и одинаковые хэши

 ,


0

1

Задумался вот сейчас. А могут же быть? Например, md5(1) == md5(1111....еще_дохрена_единиц...). Путем добавления единиц можно проверить, но как-то лень. Или md5(«password») == md5(1111....1111)

★★

Последнее исправление: emissar (всего исправлений: 1)

Ответ на: комментарий от proud_anon

Только задумался об этом. Давно слышал такое слово, но не придавал значения.

emissar ★★
() автор топика
Ответ на: комментарий от emissar

Даже в википедии кратенько написано о коллизиях хеш-функций и md5 в частности.

grondek
()
Ответ на: комментарий от emissar

Предположим, для хэша длины 128 бит мы сгенерировали 2^128 хэшей по заданному шаблону без коллизий. Тогда каждый следующий хэш по этому же шаблону будет коллизией к одному из предыдущих. Для меньшего объёма сгенерированныъ хэшей можете посчитать сами, это просто. Это свойство напрямую вытекает из ограничения на длину выходных данных хэш-функции: таблица возможных значений хэша не бесконечна.

Sadler ★★★
()
Последнее исправление: Sadler (всего исправлений: 2)
Ответ на: комментарий от Sadler

а если функция MD5() так устроена, что значение от 1 никогда не будет равно значению от большего количества единиц?

блин, это суровый матан какой-то, тут доказательства нужны

#cast dikiy

Harald ★★★★★
()
Ответ на: комментарий от Harald

а если функция MD5() так устроена, что значение от 1 никогда не будет равно значению от большего количества единиц?

Тогда функция перемешивания отстойная. Я ведь не сказал, что найдётся именно коллизия от «1». Какая-то точно найдётся. Просто потому, что рано или поздно будет исчерпано всё множество значений функции. Да, можно построить функцию перемешивания вида y(1) = 0 , y(x!=1) = 1, тогда никаких коллизий к x=1 не будет.

Sadler ★★★
()
Последнее исправление: Sadler (всего исправлений: 2)
Ответ на: комментарий от Harald

а если функция MD5() так устроена, что значение от 1 никогда не будет равно значению от большего количества единиц?

такое тоже вероятно. надо достаточно хорошо разобраться в алгоритме. С наскоку не возьмешь.

dikiy ★★☆☆☆
()

Могут. Называется коллизия.

svr4
()
Ответ на: комментарий от Sadler

Просто потому, что рано или поздно будет исчерпано всё множество значений функции.

Шахматное число знаешь? Так вот, 128-ми битный хэш имеет значений - квадрат шахматного числа.

om-nom-nimouse ★★
()
Ответ на: комментарий от buddhist

И что? Это гораздо меньше бесконечности.

Зато это гораздо больше числа элементарных частиц в известной нам части вселенной.

om-nom-nimouse ★★
()
Ответ на: комментарий от om-nom-nimouse

т.е. во вселенной меньше 2^128 частиц? да это гон имхо.

Deleted
()
Ответ на: комментарий от om-nom-nimouse

И? Для математики нет никаких «элементарных частиц» и «известной части вселенной».

buddhist ★★★★★
()

Чем лучше хеш функция тем меньше вероятность коллизии. sha1 лучше чем md5, sha512 лучше sha1, а сейчас уже и sha3 должны стандартизировать которая лучше их всех. В Git например вшита sha1, интересно через сколько лет и как он будет переходить на что нибудь другое, наверно будет какой нибудь git hashupgrade.

quest ★★★★
()
Последнее исправление: quest (всего исправлений: 1)

эх

А вот если бы люди сотрудничали и могли спокойно доверять другдругу даже свои жизни может быть этого вопроса и небыло бы.

DemonZLa
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.