Калькулятор вероятности коллизии хеша

Введите длину хеша или случайного идентификатора в битах и число элементов, которые вы будете хранить. Калькулятор по формуле парадокса дней рождения найдёт вероятность хотя бы одной коллизии и подскажет, сколько элементов нужно для риска 50 %, 1 % или один на миллион.

32 для CRC-32, 64 для 64-битного хеша, 122 для случайного UUID v4, 128 для MD5, 256 для SHA-256.
Можно с порядком: 1e9 — миллиард.
Вероятность хотя бы одной коллизии2,674 %
Это примерно 1 из
37,4
Ожидаемое число совпавших пар
0,0271
Возможных значений 2ᵇ
1,845e+19
Элементов для вероятности 50 %
5 056 937 541
Элементов для вероятности 1 %
608 926 882
Элементов для вероятности один на миллион
6 074 003

Работает в браузере: всё, что вы вводите, никуда не отправляется.

Как пользоваться

  1. Введите длину хеша или случайного идентификатора в битах.
  2. Введите число элементов: файлов, записей, ID. Большие числа можно писать как 1e9 или 5e12.
  3. Смотрите вероятность коллизии, ожидаемое число совпавших пар и количество элементов для 50 %, 1 % и одного шанса на миллион.

Формула

При N = 2ᵇ возможных значений и n элементах:

  • P(коллизия) = 1 − exp(−n(n − 1) ÷ 2N) — вычисляется так, что и очень малые вероятности не теряют точность.
  • Ожидаемое число пар = n(n − 1) ÷ 2N; пока оно мало, оно почти равно вероятности.
  • Элементов для вероятности p: n = ½ + √(¼ + 2N·ln(1 ÷ (1 − p))).

Пример

64-битный хеш для 1 000 000 000 (10⁹) элементов:

  • N = 2⁶⁴ = 1,845e+19 возможных значений.
  • n(n − 1) ÷ 2N ≈ 10¹⁸ ÷ 3,69 × 10¹⁹ = 0,0271 ожидаемой пары.
  • Вероятность = 1 − e^(−0,0271) = 2,674 %, примерно 1 из 37,4.
  • Вероятность 50 % достигается на 5 056 937 541 элементе, 1 % — на 608 926 882, один на миллион — на 6 074 003.

Советы

  • Вдвое больше элементов — вчетверо выше риск, пока он мал: он растёт как n².
  • Плюс 2 бита — вдвое больше элементов при том же риске: каждый бит удваивает N и умножает допустимое n на √2.
  • Укороченные хеши (например, первые 8 hex-знаков SHA-256) несут 4 бита на знак: 8 знаков — это 32 бита, и коллизии появляются уже на десятках тысяч элементов.

Частые вопросы

Как считается вероятность коллизии?

При N = 2ᵇ равновероятных значениях и n элементах вероятность, что все различны, примерно exp(−n(n − 1) ÷ 2N), а вероятность хотя бы одной коллизии — 1 − exp(−n(n − 1) ÷ 2N). Это парадокс дней рождения, только вместо 365 дней — N значений.

Сколько элементов до вероятности коллизии 50 %?

Около 1,1774 × √N, то есть примерно 2^(b/2). Для 32 бит это около 77 тысяч элементов, для 64 бит — около 5,1 млрд, для 128 бит — около 2,2 × 10^19.

Подходит ли расчёт для UUID?

Да. В случайном UUID версии 4 — 122 случайных бита, введите 122. Даже на миллиард UUID вероятность коллизии около 10⁻¹⁹. У идентификаторов со временем, вроде UUID v7, случайных бит на одну миллисекунду меньше, и риск зависит от того, сколько их создаётся одновременно.

Значит ли это, что хеш криптографически стоек?

Нет. Формула предполагает, что значения ведут себя как случайные. Для взломанных хешей вроде MD5 и SHA-1 коллизии можно подобрать намеренно — гораздо быстрее, чем следует из парадокса дней рождения.

Ещё в разделе «Разработчикам»

Все инструменты раздела: Разработчикам ·Обновлено 7 ноября 2026 г.

Настройки конфиденциальности

Google Analytics показывает нам, какими инструментами пользуются и работают ли они. Он может ставить cookie. Ваш выбор сохраняется в этом браузере.