RevealTheme logo

Generator UUID

Generuj UUID v4 (uniwersalne, losowe, unikalne identyfikatory). Każde kliknięcie tworzy nowy.

Jak korzystać z tego narzędzia

  1. 1

    Click the Generate UUID button to produce a fresh random v4 UUID.

  2. 2

    Read the 36-character identifier shown in the canonical 8-4-4-4-12 format below the button.

  3. 3

    Click Copy to put the UUID on your clipboard for pasting into code, a database, or a config file.

  4. 4

    Click Generate UUID again whenever you need another one — every click replaces the value with a brand-new random UUID.

Czym jest UUID i dlaczego oprogramowanie go używa?

UUID (Universally Unique Identifier, czasami nazywany GUID w kontekstach Microsoftu) to 128-bitowa wartość używana do identyfikowania encji bez potrzeby koordynacji między systemami. Idea UUID polega na tym, że dwa różne programy, działające na dwóch różnych maszynach i nieznające się wzajemnie, mogą generować UUID i z pewnością założyć, że nigdy nie wystąpi kolizja. Ta właściwość umożliwia projektowanie systemów rozproszonych: możesz pozwolić dowolnej usłudze tworzyć identyfikatory lokalnie bez centralnego licznika, scalać bazy danych bez ponownego numerowania wierszy oraz wstępnie generować identyfikatory po stronie klienta, zanim serwer w ogóle zobaczy żądanie. UUID mają pięć kanonicznych wersji zdefiniowanych w RFC 4122: v1 (oparta na czasie + adresie MAC, ujawnia czas utworzenia i tożsamość maszyny), v3 (skrót MD5 przestrzeni nazw + nazwy), v4 (losowa, najczęstsza), v5 (skrót SHA-1 przestrzeni nazw + nazwy). RFC 9562 dodało v6 (uporządkowaną według czasu, jak v1, ale bez ujawniania MAC) oraz v7 (znacznik czasu Unix + losowość, zaprojektowaną specjalnie dla kluczy podstawowych baz danych, ponieważ sortuje się chronologicznie). To narzędzie generuje UUID v4 za pomocą crypto.randomUUID(), które wykorzystuje kryptograficznie silną losowość pochodzącą z systemu operacyjnego, na którym działa przeglądarka – z tego samego źródła pochodzą klucze TLS. Wynik jest bajt po bajcie identyczny z wynikiem uuid.uuid4() w Pythonie, crypto.randomUUID() w Node oraz google/uuid.NewRandom() w Go.

Typowe przypadki użycia

  • Klucze główne bazy danych – zastąp automatycznie inkrementowane liczby całkowite, gdy musisz scalać bazy danych lub generować identyfikatory po stronie klienta.

  • Identyfikatory sesji w plikach cookie – wystarczająco długie, aby złamanie metodą brute-force prawidłowego identyfikatora sesji było obliczeniowo niewykonalne.

  • Klucze idempotentności dla żądań API – bezpiecznie powtarzaj żądanie; serwer deduplikuje je na podstawie UUID.

  • Identyfikatory przesyłanych plików – nazywaj przesłane pliki według UUID, aby zapobiec kolizjom ścieżek i nie ujawniać oryginalnych nazw plików.

  • Identyfikatory śledzenia rozproszonego – każde żądanie otrzymuje UUID, propagowany przez usługi w celu korelacji logów.

  • Identyfikatory danych testowych (fixtures) – przewidywalna losowość dla danych testowych bez koordynowania identyfikatorów między przypadkami testowymi.

Najczęściej zadawane pytania

Co oznacza v4?
Wersja 4: generowana z 122 bitów losowości plus 6 stałych bitów wersji/wariantu. Inne wersje: v1 opiera się na znaczniku czasu + MAC (nie używaj jej; ujawnia tożsamość maszyny i czas), v3/v5 to deterministyczne skróty przestrzeni nazw + nazwy (przydatne do stabilnych identyfikatorów pochodnych), v7 jest losowa z prefiksem znacznika czasu (doskonała dla baz danych, ponieważ sortuje się chronologicznie). W większości przypadków v4 jest właściwym wyborem domyślnym.
Jak unikalne naprawdę są UUID?
UUID v4 mają 122 efektywne bity losowości: 5,3×10^36 możliwych wartości. Musiałbyś wygenerować 2,71 tryliona UUID, zanim osiągnąłbyś 50% prawdopodobieństwo kolizji. Dla kontekstu: gdybyś generował miliard UUID na sekundę, potrzebowałbyś 85 lat, aby osiągnąć ten próg. Praktyczne kolizje nie zdarzają się przy dobrym generatorze liczb losowych.
Czy do kluczy podstawowych baz danych powinienem używać v4 czy v7?
v7 jest lepsza dla baz danych. UUID v4 są losowe, co oznacza, że nowe wiersze rozpraszają się losowo po indeksach B-tree, powodując rozrost indeksu i wolne wstawiania na dużą skalę. v7 umieszcza znacznik czasu na początku, więc nowe UUID zawsze sortują się po starych, utrzymując sekwencyjne wzorce wstawiania. PostgreSQL, MySQL i SQL Server korzystają z v7. Jeśli Twoja biblioteka nie obsługuje jeszcze v7, ULID są popularną alternatywą o tej samej właściwości.
Czy używanie crypto.randomUUID() jest bezpieczne?
Tak. Jest specyfikowane przez WHATWG i zaimplementowane we wszystkich nowoczesnych przeglądarkach za pomocą kryptograficznego generatora liczb losowych systemu operacyjnego (z tego samego źródła pochodzą klucze TLS). Wynik jest nieprzewidywalny i równomiernie rozłożony w całej przestrzeni UUID v4.
Jaka jest różnica między UUID a GUID?
Są funkcjonalnie identyczne: GUID to termin Microsoftu na to samo pojęcie. Format bajtów różni się w niektórych interfejsach API Microsoftu (Guid.ToByteArray() w .NET używa mieszanej kolejności bajtów w pierwszych trzech polach), więc gdy liczy się interoperacyjność, zwracaj uwagę na kolejność bajtów. Kanoniczny format ciągu (8-4-4-4-12) jest identyczny.
Czy mogę skrócić UUID, aby użyć go w adresie URL?
Tak: zakoduj 128 bitów w Base62 lub Base64 zamiast kanonicznego formatu szesnastkowego. Base62 daje 22 znaki; Base64 daje 22 z dopełnieniem lub 22 w wariancie bezpiecznym dla adresów URL. Niektóre biblioteki używają też formatów „krótkiego UUID”. Podstawowe bity nie ulegają zmianie; różni się tylko kodowanie wyświetlania.
Dlaczego mój UUID zaczyna się od tych samych znaków co inny?
To przypadek: UUID v4 są losowe. Przy łącznie 36 znakach szesnastkowych i tylko 22 losowych znakach szesnastkowych (4 są zarezerwowane dla wersji/wariantu, a 4 to myślniki) niektóre zbieżności prefiksów są nieuniknione, gdy generujesz ich wiele. Cały UUID jest unikalny, nawet jeśli prefiksy się pokrywają.

Powiązane narzędzia