Generator UUID Wersji 3 (MD5 oparty na nazwie)

Generuj spójne UUID używając przestrzeni nazw i nazwy z haszowaniem MD5

Ustawienia namespaceSHA-1

UUID w wersji v3 i v5 wymagają namespace i nazwy do generowania deterministycznych UUID.

Musi być prawidłowym UUID. Użyj listy rozwijanej, aby wybrać zdefiniowany namespace.
Dowolny ciąg tekstowy, który zostanie zahashowany do utworzenia UUID.

Wypróbuj te przykłady:

Co to jest UUID v3?

Wersja UUID 3 to identyfikator 128-bitowy oparty na przestrzeni nazw (ciąg 36 znaków) z RFC 4122, który używa skrótu MD5. Składa się z:

  • Namespace UUID: Predefiniowana lub niestandardowa przestrzeń nazw UUID
  • Name: Ciąg znaków podany przez użytkownika, który jest haszowany
  • Skrót MD5: Zastosowany do kombinacji przestrzeni nazw + nazwy

Przykład formatu: 9125a8dc-52ee-365b-a5aa-81b0b3681cf6

Jak działa UUID v3

  1. Wybierz przestrzeń nazw UUID (predefiniowaną lub niestandardową)
  2. Połącz bajty przestrzeni nazw UUID z bajtami ciągu nazwy
  3. Oblicz skrót MD5 z połączonej wartości
  4. Ustaw bity wersji na 0011 (wersja 3)
  5. Ustaw bity wariantu na 10 (standard RFC 4122)
  6. Złóż jako 32 cyfry szesnastkowe z myślnikami: format 8-4-4-4-12

Zalety i uwagi

AdvantagesConsiderations
  • Deterministyczne generowanie
  • Ten sam input = ten sam UUID
  • Brak wymaganego stanu
  • Brak problemów z prywatnością
  • MD5 jest kryptograficznie słaby
  • Nie jest uporządkowany czasowo/sortowalny
  • Preferowany UUID v5 (SHA-1)
  • Brak osadzonego czasu utworzenia

Struktura UUID v3

BitsContent
0-47Pierwsze 48 bitów skrótu MD5
48-51Wersja (0011 dla v3)
52-63Następne 12 bitów skrótu MD5
64-65Wariant (10 dla RFC4122)
66-127Pozostałe 62 bity skrótu MD5

Predefiniowane przestrzenie nazw

NameUUIDPurpose
DNS6ba7b810-9dad-11d1-80b4-00c04fd430c8Nazwy domen
URL6ba7b811-9dad-11d1-80b4-00c04fd430c8URLs
OID6ba7b812-9dad-11d1-80b4-00c04fd430c8ISO OIDs
X.500 DN6ba7b814-9dad-11d1-80b4-00c04fd430c8X.500 Distinguished Names

UUID v3 a inne wersje

VersionOparte naPrzypadek użyciaPrivacy
UUID v1Czas + MACIdentyfikatory uporządkowane czasowo⚠️ Ujawnia MAC
UUID v3Przestrzeń nazw + MD5Deterministyczne identyfikatory✅ Prywatne
UUID v4RandomBezpieczne losowe identyfikatory✅ Prywatne
UUID v5Przestrzeń nazw + SHA-1Deterministyczne identyfikatory✅ Prywatne
UUID v6Czas (przearanżowany)Identyfikatory sortowalne⚠️ Ujawnia MAC
UUID v7Czas + losowośćIdentyfikatory sortowalne✅ Prywatne

Typowe przypadki użycia

  • Identyfikatory oparte na URL: Tworzenie UUID z URL
  • Identyfikatory specyficzne dla domeny: Konwersja nazw DNS na UUID
  • Deterministyczne identyfikatory plików: Adresowanie zawartości
  • Identyfikatory użytkowników: Z emaila lub nazwy użytkownika
  • Wpisy konfiguracyjne: Dla spójnych kluczy
  • Odwołania do dokumentów: Systemy zarządzania treścią

Najczęściej zadawane pytania

Czy UUID v3 jest kryptograficznie bezpieczny?

Nie do końca. UUID v3 używa MD5, który ma znane słabości kryptograficzne. Dla wyższego poziomu bezpieczeństwa rozważ UUID v5 (SHA-1) lub UUID v4 (losowy).

Czy te same dane wejściowe zawsze wygenerują ten sam UUID v3?

Tak. UUID v3 jest deterministyczny - ta sama przestrzeń nazw i nazwa zawsze wygenerują identyczny UUID, co jest przydatne do powtarzalnych identyfikatorów.

Jaka jest różnica między UUID v3 a v5?

Działają identycznie, z tym że v3 używa MD5, a v5 SHA-1. UUID v5 jest zazwyczaj preferowany, ponieważ SHA-1 jest kryptograficznie silniejszy niż MD5.

Czy mogę tworzyć własne przestrzenie nazw?

Tak. Chociaż RFC 4122 definiuje standardowe przestrzenie nazw (DNS, URL, OID, X.500), możesz tworzyć niestandardowe przestrzenie nazw używając dowolnego ważnego UUID.

Czy UUID v3 nadaje się do tokenów bezpieczeństwa?

Nie. Ze względu na słabości MD5 i deterministyczny charakter, UUID v3 nie jest zalecany do tokenów bezpieczeństwa ani czegokolwiek wymagającego nieprzewidywalności.

Resources