Перейти к основному содержанию

Калькулятор вероятности коллизии хешей (Парадокс дня рождения)

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

Ввод

Количество возможных различных значений, которые может принимать хеш или ID (2^bits).

Сколько случайных хешей/ID создается. Принимает обычные числа или научные обозначения, например 1e12.

Пороги 50% / 1% / 0,01% ниже также всегда отображаются.

Вывод

Результаты вероятности коллизии

Результат
МетрикаЗначение
No data yet
Использует стандартную аппроксимацию парадокса дня рождения P = 1 - e^(-n(n-1)/2H), где H — размер пространства хеша/ID. Числа "Требуемые элементы" — это количество элементов, при котором эта формула пересекает заданную вероятность — все работает в вашем браузере, ничего из того, что вы вводите, не отправляется никуда.
Это было полезно?

Другие способы использовать этот инструмент

REST API

curl -X POST https://api.iotools.cloud/v1/tool/hash-collision-probability-calculator \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "hashSize": "256",
    "items": "1000000",
    "targetProbability": "50"
  }'

Подставьте свой собственный ключ из аккаунта. Поля инструмента — это тело запроса, без обёртки.

Спросите у ИИ-агента

Use the IOTools `hash-collision-probability-calculator` tool (Hash Collision Probability Calculator (Birthday Problem)) on this input:

YOUR_INPUT_HERE

Вставьте это любому агенту, подключённому к MCP-серверу IOTools, и добавьте свой ввод.

Виджет для встраивания

<iframe
  src="https://iotools.cloud/embed/hash-collision-probability-calculator/"
  width="100%" height="520" frameborder="0" scrolling="no" loading="lazy"
  title="Калькулятор вероятности коллизии хешей (Парадокс дня рождения) — iotools.cloud"
  sandbox="allow-scripts allow-forms allow-same-origin allow-downloads allow-popups allow-popups-to-escape-sandbox"
  allow="clipboard-write"
  style="width:100%;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden"></iframe>
<script src="https://iotools.cloud/embed.js" async></script>

Вставьте это на свою страницу — бесплатно, без ключа, нужна лишь обратная ссылка.

Стоимость вызова API/MCPОт 5 кредитов
Нужно больше кредитов?Посмотреть тарифы

Также доступно через

Руководства

Что это делает

Этот калькулятор отвечает на вопрос, стоящий за "парадоксом дня рождения": если вы создаете много случайных хешей или ID, какова вероятность того, что два из них окажутся идентичными? Он использует стандартную аппроксимацию парадокса дня рождения

P(collision) ≈ 1 - e^(-n(n-1) / 2H)

где n — количество создаваемых элементов, а H — размер пространства хеша или ID (2^bits — например 2^256 для SHA-256 или 2^122 для случайных битов в UUID v4). Результат часто сильно отличается от интуиции: с 128-битным пространством вам нужно всего около 2^64 (примерно 18 квинтиллионов) случайных значений, прежде чем будет 50% вероятность совпадения двух из них — намного меньше, чем 2^128, которых вы могли бы ожидать.

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

  1. Выберите размер хеша из раскрывающегося списка (MD5, SHA-1, SHA-256, SHA-512, UUID v4, CRC32) или выберите Пользовательский размер в битах и установите свою собственную ширину бита.
  2. Введите количество элементов, которые вы планируете создать. Обычные числа и научные обозначения работают — введите 1e9 для одного миллиарда.
  3. Прочитайте вероятность по крайней мере одной коллизии для этого количества элементов.
  4. Таблица также всегда показывает, сколько элементов требуется для достижения риска коллизии 50%, 1% или 0,01%, плюс ползунок для поиска количества элементов для любой другой целевой вероятности.

Почему математика требует осторожности

Решение этого вручную (или просьба к помощнику чата "просто рассчитать это") обычно не срабатывает в масштабе: 2^256 имеет 78 цифр, и наивный калькулятор либо переполняется, либо молча усекает показатель степени, давая бессмысленную вероятность. Этот инструмент хранит каждый расчет в пространстве log2 — само пространство хеша никогда не материализуется как гигантское число — поэтому оно остается точным независимо от того, насколько велик размер хеша, и использует expm1 внутренне, поэтому очень маленькие вероятности коллизии не округляются до нуля.

Сколько элементов до коллизии коммита SHA-1 git или короткого ID базы данных?

Одна и та же формула, меньшее пространство. Короткий хеш git из 7 символов — это 28 битов — выберите Пользовательский размер в битах и установите значение 28, чтобы увидеть, как мало коммитов требуется, прежде чем коллизии коротких хешей станут вероятными. Тот же подход работает для любого пространства автоинкрементного ID, длины токена сеанса или размера коротко-ссылки, который вы определяете.

Конфиденциальность

Все работает в вашем браузере — числа, которые вы вводите, никуда не отправляются.

Связанные инструменты

Если вы выбираете размер хеша, чтобы избежать такого типа коллизии в реальной системе, калибровка вашего фактического битового бюджета для преднамеренной частоты ложноположительных результатов является связанной проблемой — см. Калькулятор параметров фильтра Блума. Чтобы самостоятельно создавать хеши, используйте Генератор хешей или Генератор UUID.

birthday paradoxbirthday problembirthday attackcollision probabilityuuid collision oddssha-256 collisionmd5 collisionhash collision oddspigeonhole principlerandom id collision

Нравятся инструменты? Уберите рекламу.

Один платёж навсегда убирает всю рекламу с вашего аккаунта. Без подписки, без слежки.