Generator UUID v4 – pregled mogućnosti i način rada
Stranica uuid-generator služi za stvaranje jednog ili više UUID‑ova verzije 4 (v4). Unosite željeni broj identifikatora (od 1 do 100) te birate prikazuju li se velikim ili malim slovima i sadrže li crtice. Svaki se ID generira trenutačno u vašem pregledniku, koristeći jaku ugrađenu slučajnost. Rezultat je popis 36‑znakovnih nizova u standardnom formatu 8‑4‑4‑4‑12, koje možete pojedinačno kopirati klikom ili sve odjednom pomoću gumba »Kopiraj sve«.
Što ovu stranicu čini drugačijom
Za razliku od mnogih drugih generatora, ova stranica eksplicitno naglašava ključne karakteristike UUID‑a v4 koje utječu na njegovu upotrebu. UUID v4 koristi 122 bita slučajnosti i ne sadrži ugrađenu vremensku oznaku. To znači da je svaka vrijednost praktički nepredvidiva i da je vjerojatnost kolizije zanemariva, ali ID‑ovi se sortiraju proizvoljno – ne nose nikakvu vremensku informaciju. Zbog toga, kada se UUID v4 koristi kao primarni ključ u bazi podataka, dolazi do fragmentacije indeksa, za razliku od vremenski sortiranih identifikatora poput UUID‑a v7 ili ULID‑a.
Stranica nudi preklopke za velika/mala slova i uključivanje crtica, ali sama unutarnja slučajnost i format ostaju fiksni. Zadani izlaz su mala slova s crticama. Promjena bilo koje opcije (broj ID‑ova, veličina slova, crtice) odmah ponovno generira cijeli skup. Sve se obrađuje lokalno – ništa ne napušta vaš preglednik, što osigurava privatnost i mogućnost rada i bez internetske veze.
Kako UUID v4 funkcionira – tehnički detalji
UUID v4 je definiran standardom RFC 4122. Ukupna duljina je 128 bita, od kojih je:
- 122 bita slučajnosti (generirana kriptografskim generatorom pseudoslučajnih brojeva u pregledniku),
- 4 bita za oznaku verzije (vrijednost 0100, tj. verzija 4),
- 2 bita za oznaku varijante (vrijednost 10, tj. RFC 4122 varijanta).
Preostalih 128 – (122 + 4 + 2) = 0 bita – nema dodatnih rezerviranih polja.
Konačni prikaz je 32 heksadecimalne znamenke (svaka po 4 bita) raspoređene u pet grupa: 8‑4‑4‑4‑12, odvojenih crticama (kada je opcija uključena). Primjer: 550e8400-e29b-41d4-a716-446655440000. Crtica je samo formatni znak i ne nosi informaciju. Bez crtica dobivamo 32 znaka u nizu: 550e8400e29b41d4a716446655440000.
Velika slova su samo vizualna promjena – primjerice 550E8400-E29B-41D4-A716-446655440000. Ne mijenjaju slučajnost, samo čitljivost.
Kvaliteta slučajnosti: Preglednici koriste crypto.getRandomValues() koji crpi entropiju iz operacijskog sustava. To je ista razina sigurnosti koja se koristi za generiranje ključeva u TLS‑u. Stoga su ID‑ovi prikladni za sigurnosne tokene, sesijske identifikatore i druge scenarije gdje je nepredvidivost ključna.
Vjerojatnost kolizije: Uz 122 bita slučajnosti, vjerojatnost da se dva UUID‑a v4 podudare u skupu od milijardu generiranih ID‑ova iznosi otprilike 1 prema 2,7 × 10¹⁸ (izvedeno iz paradoksa rođendana). U praksi to znači da je kolizija zanemariva za bilo koju razumnu količinu – čak i ako generirate 100 milijuna ID‑ova, vjerojatnost kolizije je manja od 1 prema 10¹⁰.
Mogućnosti prilagodbe i ponašanje sučelja
Stranica nudi sljedeće ulazne parametre:
| Parametar | Opcije | Zadano | Učinak |
|---|---|---|---|
| Format | UUID v4, UUID v7, ULID, NanoID | UUID v4 | Mijenja cijeli algoritam generiranja (za v4 su prikazane opcije koje slijede) |
| Broj (Count) | 1–100 | ? (vjerojatno 1) | Generira toliko ID‑ova odjednom |
| Veličina slova (Uppercase) | Uključeno / isključeno | Isključeno (mala slova) | Prikazuje slova A–F umjesto a–f |
| Uključi crtice (Include hyphens) | Uključeno / isključeno | Uključeno | Prikazuje standardni 8‑4‑4‑4‑12 format ili 32 znaka bez crtica |
Važno pravilo: Promjena bilo kojeg od ovih parametara (uključujući broj) odmah ponovno generira sve ID‑ove. Ne možete promijeniti samo veličinu slova, a da zadržite isti popis brojeva – jer se cijeli skup stvara iznova. To je namjerno, kako bi se osigurala konzistentnost između opcija.
Stanje sučelja prikazuje poruke: »Ready.« (početno), »Generated.« (nakon generiranja) i »Copied all!« (nakon kopiranja svih). Broj generiranih ID‑ova prikazuje se pored popisa.
Kome je ovaj alat namijenjen i koja su ograničenja
Primarne ciljne skupine:
- Programeri koji trebaju jedinstvene, nepredvidive identifikatore za sigurnosne tokene, ID‑ove sesija ili ne‑sekvencijske ključeve u API‑jima.
- Administratori baza podataka koji su svjesni kompromisa: UUID v4 izbjegava kolizije, ali fragmentira indekse, pa se preporučuje razmotriti vremenski sortirane alternative (UUID v7 ili ULID) ako je veličina tablice velika.
- Svatko tko generira testne podatke, vanjske identifikatore ili anonimizirane ključeve gdje vremenski redoslijed nije bitan, a nepredvidivost je važna.
Ograničenja i upozorenja:
- Maksimalno 100 ID‑ova – više nije moguće generirati u jednom koraku (ali možete ponoviti).
- Proizvoljno sortiranje – UUID v4 nije poredan po vremenu. Ako ga koristite kao primarni ključ u bazi podataka s B‑stablom, svaki novi redak će vjerojatno biti umetnut na nasumičnu poziciju, što uzrokuje česte podjele stranica i lošije performanse. Za velike tablice (milijuni redaka) to može biti ozbiljan problem.
- Nema ugrađene vremenske oznake – za razliku od UUID‑a v7 (koji ima 48‑bitni vremenski pečat), ne možete zaključiti kada je ID stvoren.
- Opcije velikih/malih slova i crtica utječu samo na prikaz, ne na stvarnu vrijednost. Ako spremate UUID u bazu, obično se čuva u malim slovima bez crtica ili u standardnom formatu – ovisno o shemi.
Privatnost i sigurnost – obrada isključivo na klijentu
Cijeli proces generiranja odvija se lokalno u vašem pregledniku:
- JavaScript pokreće
crypto.getRandomValues()za dobivanje 122 slučajna bita. - Algoritam postavlja bitove verzije i varijante prema RFC 4122.
- Rezultat se formatira u heksadecimalni niz i prikazuje.
Ni jedan podatak ne napušta vaše računalo: nema slanja na poslužitelj, nema zapisivanja u dnevnik, nema kolačića povezanih s generiranim ID‑ovima. Stranica je potpuno funkcionalna čak i bez internetske veze (nakon što se učita). To je posebno važno za osjetljive primjene poput generiranja tokena za autentifikaciju ili privremenih identifikatora.
Često postavljana pitanja
1. Koja je vjerojatnost da se dva UUID‑a v4 podudare? Vjerojatnost kolizije je iznimno niska. S 122 bita slučajnosti, ako generirate milijardu UUID‑ova, šansa da se bilo koja dva podudaraju iznosi otprilike 1 prema 2,7 × 10¹⁸. U praksi možete generirati milijune ID‑ova bez brige.
2. Zašto ne bih trebao koristiti UUID v4 kao primarni ključ u bazi podataka? Zato što su ID‑ovi nasumični – novi se redovi ne dodaju na kraj tablice nego na nasumične lokacije. To uzrokuje fragmentaciju indeksa, povećava broj operacija čitanja/pisanja i usporava upite. Ako vam je potrebno vremensko sortiranje, razmotrite UUID v7 ili ULID koji imaju ugrađeni vremenski pečat.
3. Mogu li generirati više od 100 UUID‑ova odjednom? Ne, alat ograničava broj na 100 po generaciji. Ako trebate više, jednostavno ponovno generirajte. To je učinjeno kako bi sučelje ostalo pregledno.
4. Koja je razlika između malih i velikih slova? Samo vizualna. Heksadecimalne znamenke a–f i A–F predstavljaju iste vrijednosti (10–15). Pri odabiru velikih slova, izlazni nizovi su čitljiviji u nekim kontekstima, ali baze podataka obično ignoriraju veličinu slova prilikom indeksiranja.
5. Je li UUID v4 stvarno slučajan?
Da, ako preglednik podržava crypto.getRandomValues() (svi moderni preglednici ga podržavaju). Generator koristi kriptografski jaku slučajnost iz operacijskog sustava, istu onu koja se koristi za generiranje SSL ključeva. Nije riječ o »pseudo‑slučajnosti« koja se može predvidjeti.
6. Što se događa ako promijenim format s UUID v4 na neki drugi (npr. UUID v7)? Opcije za velika slova i crtice mogu se promijeniti ili nestati, jer svaki format ima vlastitu strukturu. Ova stranica pokriva isključivo UUID v4; za ostale formate vrijede druga pravila.