Подтвердить что ты не робот

Вероятность столкновения SHA1

Учитывая набор из 100 различных строк одинаковой длины, как вы можете количественно оценить вероятность того, что столкновение SHA1 для строк вряд ли будет...?

4b9b3361

Ответ 1

alt text

Получены ли 160-битные хеш-значения от SHA-1, достаточно большой, чтобы обеспечить отпечаток каждого блока уникален? Предполагая случайные хеш-значения с равномерное распределение, совокупность n разных блоков данных и хэш функция, которая генерирует b бит, вероятность p, что будет один или больше столкновений ограничено количество пар блоков умножено вероятность того, что данная пара будет сталкиваться.

(источник: http://bitcache.org/faq/hash-collision-probabilities)

Ответ 2

Вероятно, вероятность столкновения будет:

1 - ((2^160 - 1)/2^160) * ((2^160 - 2)/2^160) *... * ((2^160 - 99)/2^160)

Подумайте о вероятности столкновения 2 предметов в пространстве 10. Первый элемент уникален с вероятностью 100%. Вторая уникальна с вероятностью 9/10. Таким образом, вероятность того, что они уникальны, составляет 100% * 90%, а вероятность столкновения:

1 - (100% * 90%), or 1 - ((10 - 0)/10) * ((10 - 1)/10), or 1 - ((10 - 1)/10)

Это довольно маловероятно. У вас должно быть много строк, чтобы это была отдаленная возможность.

Взгляните на таблицу на этой странице в Википедии; просто интерполировать между строками для 128 бит и 256 бит.

Ответ 3

Что Проблема с днем ​​рождения - статья дает приятные аппроксимации, которые позволяют легко оценить вероятность. Фактическая вероятность будет очень очень низкой - см. этот вопрос для примера.