Учитывая набор из 100 различных строк одинаковой длины, как вы можете количественно оценить вероятность того, что столкновение SHA1 для строк вряд ли будет...?
Вероятность столкновения SHA1
Ответ 1
Получены ли 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
Что Проблема с днем рождения - статья дает приятные аппроксимации, которые позволяют легко оценить вероятность. Фактическая вероятность будет очень очень низкой - см. этот вопрос для примера.