ByteCompress

Generator UUID

Generuj kryptograficznie losowe UUID wersji 4 natychmiast w swojej przeglądarce. Generowanie pojedyncze lub zbiorcze przy użyciu Web Crypto API zgodnie z RFC 9562.

51
FreeClient-sideNo signup

UUID v4 ma 122 losowych bitów, co daje około 5.3×1036 możliwych wartości. Aby mieć 50% prawdopodobieństwo pojedynczej kolizji, musiałbyś wygenerować 2.71×1018 UUID. Przy jednym miliardzie na sekundę zajmuje to 85 lat. UUID v4 jest standaryzowany w RFC 9562 (następca RFC 4122) i jest najczęściej wdrażanym formatem identyfikatora w nowoczesnych systemach rozproszonych. Ten generator używa API crypto.randomUUID() przeglądarki, wspieranego przez CSPRNG systemu operacyjnego. Generuj jeden UUID lub setki naraz - bez serwera, bez rejestracji.

Jak generować UUID

  1. Kliknij Generuj, aby natychmiast stworzyć pojedynczy UUID.
  2. Wprowadź ilość (np. 10, 100, 1000) i kliknij Generuj zbiorczo, aby uzyskać wiele UUID jednocześnie.
  3. Kliknij dowolny UUID na liście, aby skopiować go indywidualnie, lub użyj Kopiuj wszystko, aby skopiować całą listę.
  4. Wybierz format wyjściowy wielkimi lub małymi literami, zgodnie z wymaganiami twojego systemu docelowego.
  5. Użyj Pobierz, aby wyeksportować jako plik tekstowy.

Wyjaśnienie UUID v4

Struktura i format

UUID to 32 znaki szesnastkowe w wzorze 8-4-4-4-12: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx. Liczba 4 w trzeciej grupie jest stała (wersja 4). Pierwsze 1-2 bity czwartej grupy są stałe jako 10 w systemie binarnym (wariant RFC 4122). Pozostałe 122 bity są generowane losowo. UUID v4 pojawia się u każdego głównego dostawcy chmury, w systemach baz danych i frameworkach webowych jako domyślny format identyfikatora.

Prawdopodobieństwo kolizji

Przy 2122 możliwych wartościach (~5.3×1036), generowanie duplikatu UUID v4 z odpowiedniego CSPRNG jest statystycznie znikome dla jakiejkolwiek aplikacji w rzeczywistym świecie. Kolizje UUID v4 są traktowane jako niemożliwe w praktyce.

Przykład

Wygenerowany UUID v4

f47ac10b-58cc-4372-a567-0e02b2c3d479

Ten sam UUID w różnych reprezentacjach

Z myślnikami:  f47ac10b-58cc-4372-a567-0e02b2c3d479
Wielkie litery:   F47AC10B-58CC-4372-A567-0E02B2C3D479
Bez myślników:  f47ac10b58cc4372a5670e02b2c3d479
Format URN:  urn:uuid:f47ac10b-58cc-4372-a567-0e02b2c3d479

Porównanie wersji UUID

  • v1 - Oparte na czasie, zawiera adres MAC generującej maszyny. Ujawnia informacje o sprzęcie i ma wzory sekwencyjne. Unikaj do identyfikatorów wrażliwych na bezpieczeństwo.
  • v3 / v5 - Oparte na nazwie i deterministyczne: ten sam przestrzeń nazw + nazwa zawsze produkuje ten sam UUID. Przydatne do identyfikatorów powtarzalnych.
  • v4 - Całkowicie losowe (122 bity). Brak informacji osadzonych, brak wzorów sekwencyjnych. Najczęściej używany typ dla identyfikatorów generowanych przez aplikacje.
  • v7 - Losowe UUID uporządkowane według czasu (RFC 9562). Pierwsze 48 bitów to znacznik czasu w milisekundach Unix, co sprawia, że UUID v7 można sortować według czasu utworzenia. Lepsze dla wydajności indeksu B-drzewa w bazach danych niż v4.

Typowe zastosowania

  • Klucze główne w PostgreSQL (uuid), MySQL (VARCHAR(36)) i MongoDB
  • Identyfikatory systemów rozproszonych, gdzie wiele usług tworzy rekordy niezależnie bez centralnej sekwencji
  • Identyfikatory zasobów API ujawnione w publicznych URL-ach (bezpieczniejsze niż sekwencyjne liczby całkowite, które umożliwiają ataki enumeracyjne)
  • Nazwy plików dla przesyłanych zasobów, aby zapobiec kolizjom
  • Klucze idempotencji dla żądań API, aby zapobiec powtórnemu przetwarzaniu przy ponownym wysyłaniu

Aby generować bezpieczne losowe hasła (zamiast identyfikatorów), użyj Generatora Haseł. Aby uzyskać identyfikatory oparte na czasie, które są również sortowalne w bazie danych, poszukaj wsparcia dla UUID v7 w swoim sterowniku bazy danych lub ORM.

Najczęściej Zadawane Pytania

Jak unikalny jest UUID wersji 4 w praktyce?

UUID v4 ma 122 bity losowości, co daje około 5.3×1036 możliwych wartości. Aby mieć 50% szans na pojedynczą kolizję, musiałbyś wygenerować 2.71×1018 UUID - przy jednym miliardzie na sekundę zajmie to około 85 lat. W praktyce kolizje UUID v4 traktowane są jako niemożliwe.

Czy UUID generowane tutaj są kryptograficznie bezpieczne?

Tak. To narzędzie używa crypto.randomUUID() (lub crypto.getRandomValues() jako alternatywy), obie metody są wspierane przez CSPRNG systemu operacyjnego. Wygenerowane UUID są odpowiednie do użycia jako tokeny bezpieczeństwa, identyfikatory sesji i w innych kontekstach wrażliwych na bezpieczeństwo.

Czy powinienem używać UUID czy liczb całkowitych z autoinkrementacją jako kluczy głównych w bazie danych?

Oba mają swoje wady. UUID v4 dobrze sprawdza się w systemach rozproszonych, gdzie wiele węzłów generuje identyfikatory niezależnie, sprawia, że identyfikatory są nieprzewidywalne w publicznych URL-ach (zapobiegając atakom enumeracyjnym) i upraszcza łączenie baz danych. Liczby całkowite z autoinkrementacją są prostsze, mniejsze (4-8 bajtów w porównaniu do 16 bajtów) i mają lepszą wydajność indeksu B-drzewa dla sekwencyjnych wstawek. UUID v7 oferuje kompromis: losowe UUID, które są również sortowalne według czasu.

Jaki format ma UUID?

UUID to 32 małe znaki szesnastkowe pogrupowane z myślnikami w wzorze 8-4-4-4-12: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx. Całkowita długość ciągu z myślnikami wynosi 36 znaków. PostgreSQL przechowuje UUID jako natywny typ binarny o długości 16 bajtów; MySQL i SQLite zazwyczaj przechowują 36-znakowy ciąg.

Czy mogę generować UUID offline?

Tak. Po załadowaniu tej strony, generowanie UUID odbywa się całkowicie za pomocą lokalnego JavaScript i wbudowanego API crypto przeglądarki. Nie są wykonywane żadne zapytania sieciowe podczas generowania. Narzędzie działa offline po początkowym załadowaniu strony.