UUID v4 – generator identyfikatorów o losowym porządku
Generator UUID v4 na tej stronie tworzy identyfikatory w formacie 36-znakowym według standardu 8-4-4-4-12, wyłącznie w przeglądarce użytkownika, z wykorzystaniem silnego generatora losowego. Możesz kontrolować liczbę wygenerowanych identyfikatorów (od 1 do 100), decydować o wielkości liter oraz obecności myślników. Każda zmiana opcji natychmiast powoduje ponowne wygenerowanie całego zestawu.
Co wyróżnia tę stronę
UUID v4 wykorzystuje 122 bity losowości bez osadzonego znacznika czasu. Każda wartość jest praktycznie nieprzewidywalna, a prawdopodobieństwo kolizji jest zaniedbywalnie małe. W przeciwieństwie do UUID v7 czy ULID, które niosą informację o czasie, identyfikatory v4 sortują się dowolnie – nie mają żadnego porządku chronologicznego. To sprawia, że przy użyciu ich jako kluczy głównych w bazach danych należy liczyć się z fragmentacją indeksów.
Strona pozwala na przełączanie między wielkimi i małymi literami oraz włączanie lub wyłączanie myślników, ale wewnętrzna losowość i format są stałe (122 bity losowości w 16 oktetach). Domyślnie identyfikatory są generowane małymi literami z myślnikami. Zmiana dowolnego parametru odświeża cały zestaw wyników.
Struktura UUID v4 i źródło losowości
Format identyfikatorów
UUID v4 ma 128 bitów całkowitej długości, z czego:
- 6 bitów jest zarezerwowanych na oznaczenie wersji (4) i wariantu (RFC 4122)
- 122 bity są losowe
W zapisie szesnastkowym daje to 36 znaków: 32 cyfry hex oraz 4 myśniki w układzie 8-4-4-4-12. Bez myślników identyfikator ma 32 znaki.
| Element | Liczba bitów | Uwagi |
|---|---|---|
| Całkowity UUID v4 | 128 | 16 oktetów |
| Bity wersji (0100) | 4 | Stała wartość binarna |
| Bity wariantu (10xx) | 2 | Dwa bity w trzynastym oktecie |
| Bity losowe | 122 | Generowane w przeglądarce |
Źródło losowości w przeglądarce
Całe generowanie odbywa się lokalnie, bez wysyłania jakichkolwiek danych do serwera. Przeglądarka wykorzystuje kryptograficznie bezpieczny generator pseudolosowy (CSPRNG), dostępny przez interfejs crypto.getRandomValues(). Ten mechanizm produkuje wartości zgodne z wymaganiami RFC 4122 dla UUID wersji 4.
Ponieważ dane nigdy nie opuszczają przeglądarki, generator działa również w trybie offline (po pierwszym załadowaniu strony). Nie ma ryzyka przechwycenia identyfikatorów w trakcie transmisji ani przechowywania ich na serwerze.
Prawdopodobieństwo kolizji
Przy 122 bitach losowości prawdopodobieństwo przypadkowego wygenerowania dwóch identycznych UUID v4 jest znikome. Aby osiągnąć 50% szans na kolizję, trzeba by wygenerować około 2,71×10^18 identyfikatorów (co wynika z paradoksu urodzinowego dla 122 bitów). Dla porównania, generowanie miliarda identyfikatorów na sekundę przez miliard lat daje około 3,16×10^25 sztuk, co wciąż pozostawia ogromny margines bezpieczeństwa.
Opcje formatowania i ich wpływ
Przełącznik wielkich/malych liter
Domyślnie generowane są małe litery. Włączenie opcji "Uppercase" zamienia wszystkie cyfry szesnastkowe (a-f) na ich wielkie odpowiedniki (A-F). Ma to znaczenie wyłącznie wizualne – format wewnętrzny pozostaje identyczny, a wartość numeryczna się nie zmienia.
Przykład tego samego UUID v4 w dwóch wersjach:
6ba7b810-9dad-11d1-80b4-00c04fd430c8 (małe litery)
6BA7B810-9DAD-11D1-80B4-00C04FD430C8 (wielkie litery)
Przełącznik myślników
Domyślnie myślniki są włączone (format 8-4-4-4-12). Usunięcie myślników skraca identyfikator do 32 znaków:
6ba7b8109dad11d180b400c04fd430c8
Wybór ten może być przydatny w kontekstach, gdzie potrzebny jest ciągły ciąg znaków (np. w nazwach plików, w niektórych formatach API). Należy jednak pamiętać, że bez myślników identyfikator traci czytelność i łatwiej popełnić błąd przy ręcznym przepisywaniu.
Dla kogo jest to narzędzie
- Programiści potrzebujący unikalnych, nieprzewidywalnych identyfikatorów dla tokenów bezpieczeństwa, identyfikatorów sesji, kluczy w systemach rozproszonych (gdzie nie ma centralnego punktu nadawania identyfikatorów).
- Administratorzy baz danych, którzy rozumieją kompromis: UUID v4 zapewnia praktyczną unikalność bez ryzyka wyczerpania sekwencji, ale fragmentuje indeksy drzewiaste (B‑tree, B+‑tree) przy użyciu jako klucz główny z powodu arbitralnego sortowania.
- Zespoły testowe generujące zestawy danych testowych, identyfikatory zewnętrzne lub klucze anonimizowane, gdzie porządek chronologiczny nie jest wymagany, a nieprzewidywalność jest pożądana.
- Każdy kto potrzebuje szybko wygenerować partię identyfikatorów UUID v4 (do 100 sztuk) i skopiować je w wybranym formacie (duże/małe litery, z myślnikami lub bez).
Reguły i przypadki brzegowe
Ograniczenia liczbowe
- Liczba identyfikatorów musi zawierać się w przedziale od 1 do 100 włącznie. Wprowadzenie wartości 0 lub powyżej 100 nie jest akceptowane – system nie wygeneruje wtedy nowych identyfikatorów.
- Zmiana dowolnego parametru (liczby, wielkości liter, obecności myślników) natychmiast powoduje regenerację wszystkich identyfikatorów. Nie ma możliwości zmiany tylko jednego elementu bez odświeżenia całego zestawu.
Kopiowanie identyfikatorów
- Kliknięcie pojedynczego identyfikatora kopiuje go do schowka.
- Przycisk "Copy all" kopiuje wszystkie wyświetlone identyfikatory jednocześnie. Domyślnie są one skopiowane jako osobne wiersze, ale format może zależeć od implementacji poszczególnych przeglądarek.
- Po skopiowaniu wszystkich identyfikatorów pojawia się komunikat „Copied all!”.
Komunikaty statusu
Generator wyświetla trzy komunikaty:
- „Ready.” – stan początkowy przed pierwszą generacją
- „Generated.” – po wygenerowaniu identyfikatorów
- „Copied all!” – po skopiowaniu wszystkich identyfikatorów
Zmiana formatu identyfikatorów
Strona oferuje również inne formaty: UUID v7, ULID i NanoID. Zmiana formatu poza UUID v4 może zmienić dostępne opcje (np. przełącznik wielkich liter i myślników może nie być dostępny lub działać inaczej). Ten artykuł dotyczy wyłącznie trybu UUID v4.
FAQ – najczęstsze pytania
Czy mogę wygenerować więcej niż 100 identyfikatorów naraz?
Nie. Generator obsługuje od 1 do 100 identyfikatorów w jednym przejściu. Jeśli potrzebujesz więcej, możesz wygenerować setki w kolejnych partiach, pamiętając o znikomym ryzyku kolizji między partiami.
Czy identyfikatory są bezpieczne do użytku w produkcji?
Tak, o ile akceptujesz ograniczenia UUID v4 (brak sortowalności, fragmentacja indeksów). Losowość jest dostarczana przez kryptograficznie bezpieczny generator przeglądarki, ale proces generowania odbywa się lokalnie – nigdy nie opuszcza twojej maszyny.
Jaka jest różnica między UUID v4 a UUID v7?
UUID v7 zawiera osadzony znacznik czasu (milisekundy od epoki Unix), co pozwala na sortowanie chronologiczne i lepszą wydajność przy indeksowaniu. UUID v4 nie ma żadnej informacji o czasie, więc identyfikatory sortują się arbitralnie. v7 jest lepszy dla kluczy głównych w bazach danych, v4 – gdy potrzebna jest maksymalna nieprzewidywalność.
Czy UUID v4 nadaje się na klucz główny w PostgreSQL lub MySQL?
Tak, ale z ostrzeżeniem. Arbitralne sortowanie powoduje, że nowe identyfikatory są wstawiane w losowych miejscach indeksu, co prowadzi do fragmentacji stron i obniżenia wydajności przy dużych tabelach. Jeśli zależy ci na wydajności, rozważ UUID v7 (który jest sortowalny po czasie) lub ULID.
Czy mogę użyć UUID v4 w URL bez kodowania?
Możesz, ale myślniki są dozwolone w URL, więc standardowy format 8-4-4-4-12 jest bezpieczny. Jeśli myślniki przeszkadzają, możesz wyłączyć je w generatorze (otrzymasz 32-znakowy ciąg hex). Upewnij się tylko, że używasz małych liter, ponieważ niektóre systemy rozróżniają wielkość liter w URL.
Co się stanie, jeśli wygeneruję dwa takie same UUID v4?
Ponieważ istnieje 2^122 możliwych wartości, prawdopodobieństwo kolizji jest zaniedbywalne w praktyce. Jeśli jednak zdarzy się kolizja (co jest statystycznie niemal niemożliwe), oznacza to, że obie instancje wygenerowały identyczny ciąg losowy – należy wtedy zmienić źródło losowości lub użyć innego generatora. W przypadku większości zastosowań nie musisz się tym martwić.