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

Создание случайных UUID v4

UUID версии 4 — это 128-битное значение, в котором 122 бита берутся из криптографически стойкого источника случайности. Оставшиеся 6 битов задают версию и вариант RFC, поэтому третья группа любого UUID v4 начинается с цифры 4.

Разобранный пример

Случайные входные байты
9d 41 7c 02 e8 5b 13 f6 2a 7e c1 94 06 d3 b8 5f
Результат
9d417c02-e85b-43f6-aa7e-c19406d3b85f
Создано UUIDВероятность хотя бы одного дубликата
10⁶≈ 9,4 × 10⁻²⁶
10⁹≈ 9,4 × 10⁻²⁰
10¹²≈ 9,4 × 10⁻¹⁴
10¹⁵≈ 9,4 × 10⁻⁸

Сколько UUID нужно для 50% вероятности дубликата: ≈ 2,71 × 10¹⁸

Как это работает

  • Генератор заполняет 16 байтов надёжными случайными данными, затем устанавливает старший полубайт байта 6 в 4 (версия), а два старших бита байта 8 — в 10 (вариант). Поэтому третья группа начинается с 4, а четвёртая — с 8, 9, a или b.
  • При 2¹²² возможных значениях приближение парадокса дней рождения p ≈ 1 − e^(−n²/2¹²³) даёт вероятность того, что среди n случайных UUID окажется хотя бы один дубликат.
  • UUID v4 не раскрывает ни времени создания, ни данных об оборудовании. Используйте его как идентификатор, а не как пароль или секрет для аутентификации.
Версия UUID

Генерируйте от 1 до 100 UUID одновременно

О UUID

UUID v1: UUID на основе времени, которые включают временную метку и MAC-адрес компьютера, генерирующего UUID. Полезно, когда вам нужно знать, когда был создан UUID.

UUID v4: Случайно сгенерированные UUID. Это наиболее часто используемая версия, которая обеспечивает хорошую уникальность при минимальной утечке информации.

UUID v5: UUID на основе имени с использованием хеширования SHA-1. При одинаковом пространстве имен и имени вы всегда получите один и тот же UUID. Полезно для детерминированной генерации UUID.

Другие руководства по UUID