Создание случайных 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 не раскрывает ни времени создания, ни данных об оборудовании. Используйте его как идентификатор, а не как пароль или секрет для аутентификации.
Генерируйте от 1 до 100 UUID одновременно
О UUID
UUID v1: UUID на основе времени, которые включают временную метку и MAC-адрес компьютера, генерирующего UUID. Полезно, когда вам нужно знать, когда был создан UUID.
UUID v4: Случайно сгенерированные UUID. Это наиболее часто используемая версия, которая обеспечивает хорошую уникальность при минимальной утечке информации.
UUID v5: UUID на основе имени с использованием хеширования SHA-1. При одинаковом пространстве имен и имени вы всегда получите один и тот же UUID. Полезно для детерминированной генерации UUID.