Co to jest identyfikator UUID? Pełne wyjaśnienie uniwersalnie unikalnych identyfikatorów
Szybka odpowiedź
UUID to 128-bitowy identyfikator reprezentowany jako 36 znaków (32 cyfry hex plus 4 myślniki). UUIDy są praktycznie unikalne bez koordynacji —prawdopodobieństwo kolizji jest znikome. UUID v4 (random) to najpowszechniejsza wersja. Użyj naszego darmowego UUID Generator.
Wstęp
UUID (Universally Unique Identifier), nazywany też GUID (Globally Unique Identifier) w terminologii Microsoft, to 128-bitowy identyfikator praktycznie gwarantowany do bycia unikalnym bez centralnej koordynacji. UUIDy są zdefiniowane przez RFC 4122 i powszechnie używane jako klucze główne baz danych, ID żądań, tokeny sesji i identyfikatory systemów rozproszonych. Najpowszechniejsza wersja to UUID v4, która używa losowych bitów.
Krok po kroku
-
Zrozum strukturę UUID
UUID ma 128 bitów i jest wyświetlany jako 32 cyfry szesnastkowe w 5 grupach: 8-4-4-4-12, oddzielone myślnikami (np. 550e8400-e29b-41d4-a716-446655440000). 13. cyfra wskazuje wersję (4 dla v4), a 17. cyfra oznacza wariant.
-
Poznaj wersje UUID
v1: oparty na czasie (znacznik czasu + adres MAC) — uporządkowany według czasu, ale powoduje wyciek tożsamości. v3: oparty na nazwie z haszowaniem MD5. wersja 4: losowa — najczęstsza, bez obaw o prywatność. v5: oparty na nazwie z haszowaniem SHA-1. v6 i v7: uporządkowane czasowo z lepszą prywatnością w porównaniu z wersją 1.
-
Zrozumienie prawdopodobieństwa kolizji
UUID v4 ma 2^122 możliwych wartości. Prawdopodobieństwo kolizji pomiędzy 103 bilionami UUID wynosi 50%. W praktyce (miliony identyfikatorów) prawdopodobieństwo kolizji wynosi praktycznie zero — identyfikatory UUID można generować niezależnie, bez koordynacji.
-
Używaj odpowiednio identyfikatorów UUID
Używaj wersji 4 w prawie wszystkich przypadkach użycia (identyfikatory baz danych, identyfikatory żądań, tokeny sesji). Użyj wersji 7, jeśli potrzebujesz identyfikatorów uporządkowanych czasowo dla lokalizacji bazy danych. Unikaj v1 w kontekstach wrażliwych na bezpieczeństwo – osadza znacznik czasu i adres MAC.
Przykłady
UUID v4 (losowo)
Wejście: Wygenerowano za pomocą crypto.getRandomValues
Wyjście: 550e8400-e29b-41d4-a716-446655440000
UUID v1 (na podstawie czasu)
Wejście: Znacznik czasu + adres MAC
Wyjście: a3bbf0ee-d6e4-11ed-a5b3-3c9703e8b4a1
Zero __ZACHOWAJ_15__
Wejście: All zeros
Wyjście: 00000000-0000-0000-0000-000000000000
Typowe problemy
- Używanie Math.random() do identyfikatorów UUID — nie jest to bezpieczne kryptograficznie. Użyj crypto.getRandomValues() lub crypto.randomUUID() w przeglądarkach.
- Przechowywanie identyfikatorów UUID w postaci ciągów — ciąg UUID ma 36 bajtów; przechowywany jako typ UUID (16 bajtów), jest bardziej wydajny. Jeśli jest dostępny, używaj natywnego typu UUID w bazach danych.
- Używanie wersji 1 w kontekstach wrażliwych na bezpieczeństwo — wersja 1 osadza znacznik czasu i adres MAC, co może spowodować wyciek informacji o tym, kiedy i gdzie został wygenerowany. Użyj wersji 4, aby zachować anonimowość.
- Zakładając, że identyfikatory UUID są naprawdę unikalne — są one praktycznie unikalne (prawdopodobieństwo kolizji jest znikome), ale nie są gwarantowane matematycznie.
Porady
- Używaj UUID v4 w prawie wszystkich przypadkach użycia — jest to losowe, nie ma żadnych obaw dotyczących prywatności i jest obsługiwane przez wszystkie nowoczesne bazy danych.
- Użyj crypto.randomUUID() w nowoczesnych przeglądarkach, aby uzyskać wbudowany generator v4 bez biblioteki.
- Przechowuj identyfikatory UUID jako typ UUID/GUID w bazach danych (16 bajtów) zamiast ciągów znaków (36 bajtów), aby zapewnić lepszą wydajność przechowywania i indeksowania.
- Skorzystaj z naszego generatora UUID, aby natychmiast utworzyć identyfikatory UUID w przeglądarce — bez rejestracji, w pełni prywatnie.