Generator UUID Wersji 5 (oparty na nazwach SHA-1)

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

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 v5?

Wersja UUID 5 to oparty na przestrzeni nazw 128-bitowy identyfikator (ciąg 36 znaków) zdefiniowany w RFC 4122. Łączy:

  • UUID przestrzeni nazw: Predefiniowany lub niestandardowy UUID do zakresu generowania
  • Name: Wartość ciągu zdefiniowana przez użytkownika w przestrzeni nazw
  • SHA-1 hash: Algorytm kryptograficzny używany do wygenerowania wyniku

Przykład formatu: 2ed6657d-e927-5eb1-9a03-0242ac130003

Jak działa UUID v5

  1. Wybierz UUID przestrzeni nazw (predefiniowany lub niestandardowy)
  2. Połącz UUID przestrzeni nazw i ciąg nazwy
  3. Oblicz SHA-1 hash połączonej wartości
  4. Ustaw bity wersji (0101) i wariantu (10)
  5. Złóż jako 32 cyfry szesnastkowe z myślnikami: format 8-4-4-4-12

Zalety i uwagi

AdvantagesConsiderations
  • Deterministyczny (ten sam input = ten sam UUID)
  • Organizacja z przestrzenią nazw
  • Brak zależności od sieci lub czasu
  • Brak problemów z prywatnością (brak adresu MAC)
  • Nieuporządkowane czasowo
  • Ten sam input zawsze tworzy ten sam UUID
  • Wybór przestrzeni nazw wpływa na unikalność
  • SHA-1 ma znane słabości kryptograficzne

Struktura UUID v5

BitsContent
0-47Pierwsze 48 bitów SHA-1 hash
48-51Wersja (0101 dla v5)
52-63Następne 12 bitów SHA-1 hash
64-65Wariant (10 dla RFC4122)
66-127Pozostałe 62 bity SHA-1 hash

UUID v5 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 + losoweIdentyfikatory sortowalne✅ Prywatne

Predefiniowane przestrzenie nazw

NamespaceUUIDPurpose
DNS6ba7b810-9dad-11d1-80b4-00c04fd430c8Dla nazw domen
URL6ba7b811-9dad-11d1-80b4-00c04fd430c8Dla URL
OID6ba7b812-9dad-11d1-80b4-00c04fd430c8Dla ISO OID
X.500 DN6ba7b814-9dad-11d1-80b4-00c04fd430c8Dla X.500 Distinguished Names

Typowe zastosowania

  • Adresowanie zawartości: Spójne identyfikatory dla identycznej zawartości
  • Systemy rozproszone: Nazwane zasoby w różnych systemach
  • Mapowanie URL: Konwersja URL na stabilne identyfikatory
  • Zarządzanie konfiguracją: Śledzenie nazwanych elementów konfiguracji
  • Deduplikacja danych: Identyfikacja identycznych rekordów
  • Federation: Spójne identyfikatory między systemami

Najczęściej zadawane pytania

Czy UUID v5 jest lepszy niż UUID v3?

Tak, dla większości zastosowań. UUID v5 używa SHA-1, który jest kryptograficznie silniejszy niż algorytm MD5 używany w UUID v3. Jednak oba zapewniają deterministyczne generowanie.

Czy wartości UUID v5 mogą się zderzyć?

Kolizje są teoretycznie możliwe, ale w praktyce niezwykle mało prawdopodobne ze względu na właściwości SHA-1. Używanie różnych przestrzeni nazw lub ciągów nazw praktycznie eliminuje ryzyko kolizji.

Czy SHA-1 jest wystarczająco bezpieczny dla UUID v5?

Dla celów UUID, SHA-1 pozostaje odpowiedni pomimo swoich słabości kryptograficznych. UUID v5 nie jest przeznaczony do celów bezpieczeństwa, lecz do generowania spójnych identyfikatorów.

Czy mogę stworzyć własną przestrzeń nazw dla UUID v5?

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, zazwyczaj losowego UUID v4.

Czy ta sama nazwa zawsze wygeneruje ten sam UUID v5?

Tak, ale tylko w tej samej przestrzeni nazw. Ta sama nazwa w różnych przestrzeniach nazw wygeneruje różne UUID, co jest kluczową cechą organizacji identyfikatorów.

Resources