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

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

Ответ 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

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