Создание детерминированных UUID v5
UUID версии 5 вычисляется из UUID пространства имён и имени с помощью SHA-1. Любой, кто хеширует то же пространство имён и то же имя, получит точно такой же UUID, поэтому идентификаторы можно пересчитывать, а не хранить.
Разобранный пример
- Пространство имен (UUID)
- DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8)
- Имя
- example.com
- Результат
- cfbff0d1-9375-5685-968c-48ce8b15ae17
- Пространство имен (UUID)
- DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8)
- Имя
- Example.com
- Результат
- a1feb884-07f5-5a14-8edb-cb659a7fbadc
Как это работает
- 16 байтов пространства имён объединяются с байтами имени в UTF-8 и хешируются SHA-1. Первые 16 байтов хеша становятся UUID после установки битов версии (5) и варианта.
- RFC 9562 заранее определяет пространства имён для имён DNS, URL, ISO OID и отличительных имён X.500. Любой собственный UUID тоже может служить частным пространством имён.
- Имена сравниваются побайтно: регистр букв, пробелы и завершающие косые черты меняют результат, поэтому сначала нормализуйте имена. Результат предсказуем, поэтому никогда не используйте UUID v5 как секрет.
Генерируйте от 1 до 100 UUID одновременно
Пространство имен DNS: 6ba7b810-9dad-11d1-80b4-00c04fd430c8 (по умолчанию)
Имя для хеширования (например, доменное имя, электронная почта и т.д.)
О UUID
UUID v1: UUID на основе времени, которые включают временную метку и MAC-адрес компьютера, генерирующего UUID. Полезно, когда вам нужно знать, когда был создан UUID.
UUID v4: Случайно сгенерированные UUID. Это наиболее часто используемая версия, которая обеспечивает хорошую уникальность при минимальной утечке информации.
UUID v5: UUID на основе имени с использованием хеширования SHA-1. При одинаковом пространстве имен и имени вы всегда получите один и тот же UUID. Полезно для детерминированной генерации UUID.