Koduj tekst do Base64 i dekoduj go z powrotem.
Generator UUID
Generuj kryptograficznie losowe identyfikatory UUID w wersji 4.
Działa w przeglądarcePrzetwarzanie lokalne. Dane wejściowe nie opuszczają Twojego urządzenia.
Szczegóły
O tym narzędziu
Generuje identyfikatory UUID w wersji 4 hurtowo, z kryptograficznego źródła losowości wbudowanego w przeglądarkę. Wybierasz, ile ich ma być, czy zostawić myślniki i czy zapisać je wielkimi literami.
UUID to 128-bitowy identyfikator zapisany jako 32 znaki szesnastkowe w pięciu grupach rozdzielonych myślnikami. Wersja 4 znaczy, że jest w zasadzie cały losowy: 122 z tych bitów pochodzą ze źródła losowości, a pozostałe sześć oznacza wersję i wariant - dlatego trzynasty znak to zawsze 4, a siedemnasty zawsze 8, 9, a albo b. Te dwie stałe pozycje to szybki sposób na rozpoznanie, z jakim UUID-em ma się do czynienia.
Sens UUID-a polega na tym, że można go utworzyć gdziekolwiek i przez kogokolwiek, bez pytania centralnej instancji, czy wartość jest zajęta - a tego autoinkrementowana kolumna w bazie nie potrafi. To czyni go naturalnym kluczem dla rekordów tworzonych offline, scalanych z kilku systemów albo generowanych przez klienta, zanim serwer w ogóle o nich usłyszał. Przy okazji identyfikator nic nie zdradza o liczbie rekordów, w przeciwieństwie do numeru po kolei, który każdemu odwiedzającemu mówi, ilu masz klientów.
Kolizji nie trzeba planować. Przy 122 losowych bitach trzeba by generować miliardy UUID-ów na sekundę przez stulecie, zanim duplikat stałby się prawdopodobny. Znacznie bardziej liczy się jakość losowości i dlatego wartości pochodzą z crypto.getRandomValues, a nie z Math.random - ta druga jest przewidywalna i nie ma czego szukać przy generowaniu identyfikatorów. Nic nie jest pobierane z serwera, więc wygenerowane wartości należą tylko do Ciebie.
Wypróbuj też
Powiązane narzędzia
- Działa w przeglądarceProgramistyczne
-
Zamieniaj znaczniki czasu Unix na daty i odwrotnie.
Działa w przeglądarceProgramistyczne -
Formatuj C# silnikiem zgodnym z CSharpierem i opartym na Roslynie.
Działa w przeglądarceProgramistyczne
Warto wiedzieć
Najczęstsze pytania
- Czy te UUID-y są naprawdę losowe?
- Tak. Pochodzą z crypto.getRandomValues, czyli kryptograficznego źródła losowości przeglądarki, a nie z Math.random. To rozróżnienie ma znaczenie: Math.random jest szybki, przewidywalny i w zupełności wystarcza do przetasowania listy, ale atakujący, który zobaczy kilka jego wyników, wyliczy resztę - a to byłby realny problem dla tokenu albo identyfikatora sesji.
- Co czyni z tego UUID w wersji 4?
- Bity wersji i wariantu. W UUID v4 trzynasty znak szesnastkowy to zawsze 4, a siedemnasty zawsze 8, 9, a albo b; pozostałe 122 bity są losowe. UUID w wersji 1 buduje się ze znacznika czasu i adresu MAC, a nowsza wersja 7 sortuje się chronologicznie, co lubią bazy danych.
- Czy dwa UUID-y mogą wyjść takie same?
- W teorii tak, w praktyce nigdy. Przy 122 losowych bitach trzeba by generować miliardy na sekundę przez jakieś stulecie, zanim duplikat stałby się prawdopodobny. Realnym ryzykiem nie jest matematyka, tylko słabe źródło losowości - i tego właśnie unika się, sięgając po źródło kryptograficzne.
- Czy używać UUID jako klucza głównego w bazie?
- To zależy od bazy. UUID-y są idealne, gdy rekordy powstają w kilku miejscach naraz albo offline, bo nie trzeba niczego uzgadniać. Kosztem jest to, że losowe wartości rozrzucają zapisy po całym indeksie B-drzewa, co przy dużej tabeli psuje wydajność wstawiania i rozdyma indeks - odczuwają to i PostgreSQL, i MySQL. Jeśli to problem, UUIDv7 zachowuje niezależność, a przy tym sortuje się po czasie.