Przejdź do głównej treści

Generowanie deterministycznych wartości UUID v5

UUID w wersji 5 powstaje z UUID przestrzeni nazw i nazwy za pomocą SHA-1. Każdy, kto zahaszuje tę samą przestrzeń nazw i tę samą nazwę, otrzyma dokładnie ten sam UUID, więc identyfikatory można obliczać ponownie zamiast je przechowywać.

Przykład krok po kroku

Przestrzeń nazw (UUID)
DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8)
Nazwa
example.com
Wynik
cfbff0d1-9375-5685-968c-48ce8b15ae17
Przestrzeń nazw (UUID)
DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8)
Nazwa
Example.com
Wynik
a1feb884-07f5-5a14-8edb-cb659a7fbadc

Jak to działa

  • 16 bajtów przestrzeni nazw łączy się z bajtami nazwy w UTF-8 i haszuje algorytmem SHA-1. Pierwsze 16 bajtów skrótu staje się UUID po ustawieniu bitów wersji (5) i wariantu.
  • RFC 9562 predefiniuje przestrzenie nazw dla nazw DNS, adresów URL, identyfikatorów ISO OID i nazw wyróżniających X.500. Każdy własny UUID może też służyć jako prywatna przestrzeń nazw.
  • Nazwy są porównywane bajt po bajcie: wielkość liter, spacje i końcowe ukośniki zmieniają wynik, więc najpierw znormalizuj nazwy. Ponieważ wynik jest przewidywalny, nigdy nie używaj UUID v5 jako sekretu.
Wersja UUID

Wygeneruj od 1 do 100 UUID na raz

Przestrzeń nazw DNS: 6ba7b810-9dad-11d1-80b4-00c04fd430c8 (domyślna)

Nazwa do zahaszowania (np. nazwa domeny, e-mail itp.)

O UUID

UUID v1: UUID oparte na czasie, które zawierają znacznik czasu i adres MAC komputera generującego UUID. Przydatne, gdy musisz wiedzieć, kiedy UUID został utworzony.

UUID v4: Losowo generowane UUID. Jest to najczęściej używana wersja i zapewnia dobrą unikalność przy minimalnym wyciekaniu informacji.

UUID v5: UUID oparte na nazwie przy użyciu haszowania SHA-1. Przy tej samej przestrzeni nazw i nazwie zawsze otrzymasz ten sam UUID. Przydatne do deterministycznego generowania UUID.

Więcej poradników UUID