Генератор UUID версії 3 (MD5 на основі імені)

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

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

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

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

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

Що таке UUID v3?

UUID версія 3 — це ідентифікатор на основі простору імен (128 біт, рядок з 36 символів) з RFC 4122, який використовує хешування MD5. Він складається з:

  • UUID простору імен: Попередньо визначений або користувацький простір імен UUID
  • Ім'я: Рядок, наданий користувачем, який хешується
  • MD5 хеш: Застосовується до комбінації простору імен + імені

Приклад формату: 9125a8dc-52ee-365b-a5aa-81b0b3681cf6

Як працює UUID v3

  1. Виберіть UUID простору імен (попередньо визначений або користувацький)
  2. Об'єднайте байти UUID простору імен з байтами рядка імені
  3. Обчисліть MD5 хеш об'єднаного значення
  4. Встановіть біти версії на 0011 (версія 3)
  5. Встановіть біти варіанту на 10 (стандарт RFC 4122)
  6. Зберіть у 32 шістнадцяткові цифри з дефісами: формат 8-4-4-4-12

Переваги та міркування

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

Структура UUID v3

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

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

НазваUUIDПризначення
DNS6ba7b810-9dad-11d1-80b4-00c04fd430c8Імена доменів
URL6ba7b811-9dad-11d1-80b4-00c04fd430c8URLs
OID6ba7b812-9dad-11d1-80b4-00c04fd430c8ISO OIDs
X.500 DN6ba7b814-9dad-11d1-80b4-00c04fd430c8X.500 Distinguished Names

UUID v3 проти інших версій

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

Загальні випадки використання

  • Ідентифікатори на основі URL: Створення UUID з URL
  • ID, специфічні для домену: Перетворення DNS імен на UUID
  • Детерміновані ID файлів: Адресація вмісту
  • ID користувачів: З електронної пошти або імені користувача
  • Записи конфігурації: Для послідовних ключів
  • Посилання на документи: Системи управління вмістом

Часто задавані питання

Чи є UUID v3 криптографічно безпечним?

Не зовсім. UUID v3 використовує MD5, який має відомі криптографічні слабкості. Для більшої безпеки розгляньте UUID v5 (SHA-1) або UUID v4 (випадковий).

Чи завжди однакові вхідні дані будуть давати однаковий UUID v3?

Так. UUID v3 є детермінованим - однаковий простір імен та ім'я завжди будуть давати однаковий UUID, що робить його корисним для відтворюваних ID.

У чому різниця між UUID v3 та v5?

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

Чи можу я створити свої власні простори імен?

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

Чи підходить UUID v3 для токенів безпеки?

Ні. Через слабкості MD5 та детерміновану природу UUID v3 не рекомендується використовувати для токенів безпеки або будь-чого, що вимагає непередбачуваності.

Ресурси