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.
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.