Генератор UUID версії 5 (SHA-1 на основі імен)

Генеруйте послідовні UUID, використовуючи простір імен та ім'я з SHA-1 хешуванням

Налаштування простору іменSHA-1

UUID версій v3 та v5 вимагають простору імен та імені для детермінованої генерації UUID.

Має бути дійсний UUID. Використовуйте випадаючий список для вибору простору імен.
Будь-який текстовий рядок, який буде захешовано для створення UUID.

Спробуйте ці приклади:

Що таке UUID v5?

UUID версії 5 — це 128-бітний ідентифікатор на основі простору імен (рядок із 36 символів) згідно з RFC 4122. Він поєднує:

  • UUID простору імен: попередньо визначений або власний UUID для обмеження сфери генерування
  • Ім’я: рядок, що визначається користувачем у межах простору імен
  • SHA-1-хеш: криптографічний алгоритм для генерації результату

Приклад формату: 2ed6657d-e927-5eb1-9a03-0242ac130003

Як працює UUID v5

  1. Вибрати UUID простору імен (попередньо визначений або власний)
  2. Об’єднати UUID простору імен з рядком імені
  3. Обчислити SHA-1-хеш від об’єднаного значення
  4. Встановити біти версії (0101) та біти варіанту (10)
  5. Сформувати 32 шестнадцяткові цифри з дефісами в форматі 8-4-4-4-12

Переваги та застереження

ПеревагиЗастереження
  • Детермінованість (той самий вхід = той самий UUID)
  • Організація за просторами імен
  • Не залежить від мережі чи часу
  • Відсутні ризики приватності (немає MAC-адреси)
  • Не впорядковується за часом
  • Той самий вхід завжди створює той самий UUID
  • Вибір простору імен впливає на унікальність
  • SHA-1 має відомі криптографічні слабкості

Структура UUID v5

БітиВміст
0-47Перші 48 біт SHA-1-хешу
48-51Версія (0101 для v5)
52-63Наступні 12 біт SHA-1-хешу
64-65Варіант (10 для RFC4122)
66-127Залишок 62 біт SHA-1-хешу

UUID v5 vs. інші версії

ВерсіяНа основіВикористанняПриватність
UUID v1Час + MACПорядок за часом⚠️ Виставляє MAC
UUID v3Простір імен + MD5Детерміновані ID✅ Приватні
UUID v4ВипадковийБезпечні випадкові ID✅ Приватні
UUID v5Простір імен + SHA-1Детерміновані ID✅ Приватні
UUID v6Час (переставлений)Сортувані ID⚠️ Виставляє MAC
UUID v7Час + випадковийСортувані ID✅ Приватні

Попередньо визначені простори імен

Простір іменUUIDПризначення
DNS6ba7b810-9dad-11d1-80b4-00c04fd430c8Для доменних імен
URL6ba7b811-9dad-11d1-80b4-00c04fd430c8Для URL
OID6ba7b812-9dad-11d1-80b4-00c04fd430c8Для ISO OID
X.500 DN6ba7b814-9dad-11d1-80b4-00c04fd430c8Для X.500 DN

Поширені випадки використання

  • Адресація контенту: послідовні ID для однакового контенту
  • Розподілені системи: іменовані ресурси між системами
  • Відображення URL: перетворення URL у стабільні ідентифікатори
  • Управління конфігурацією: відстеження іменованих елементів конфігурації
  • Видалення дублікатів: ідентифікація однакових записів
  • Федерація: послідовні міжсистемні ідентифікатори

Часті запитання

UUID v5 кращий за UUID v3?

Так, у більшості випадків. UUID v5 використовує SHA-1, який криптографічно сильніший за MD5 в UUID v3. Проте обидва забезпечують детерміновану генерацію.

Чи можуть значення UUID v5 колідувати?

Теоретично можливо, але на практиці через властивості SHA-1 майже нереально. Використання різних просторів імен або рядків майже повністю виключає ризик колізій.

Чи є SHA-1 достатньо безпечним для UUID v5?

Для цілей UUID SHA-1 попри слабкості залишається придатним. UUID v5 не призначений для безпеки, а для послідовних ідентифікаторів.

Чи можу створити власний простір імен для UUID v5?

Так. Хоча RFC 4122 визначає стандартні простори (DNS, URL, OID, X.500), ви можете створювати власні простори, використовуючи будь-який дійсний UUID, зазвичай випадковий v4.

Чи завжди однакове ім’я генерує однаковий UUID v5?

Так, але лише в межах одного простору імен. Однакове ім’я в різних просторах імен генерує різні UUID — це ключова властивість для організації ідентифікаторів.

Ресурси