UUID v4 generator – nasumični identifikatori u pregledniku
Generator UUID v4 na ovoj stranici kreira jedan ili više identifikatora UUID verzije 4 – 36 znakova dugih nizova u standardnom obliku 8-4-4-4-12, koji se sastoje od heksadecimalnih cifara i crtica. Ključna razlika u odnosu na druge generatore je u tome što svaki UUID v4 nosi 122 bita čiste nasumičnosti (preostalih 6 bitova je fiksno za verziju i varijantu). Zbog toga se UUID v4 vrijednosti ne mogu sortirati po vremenu niti po bilo kakvom redoslijedu – one su potpuno nasumične. To znači da kada se koriste kao primarni ključevi u bazi podataka, fragmentiraju B-stablo indekse (za razliku od vremenski sortiranih formata poput UUID v7 ili ULID). Vjerovatnoća kolizije (ponavljanja istog identifikatora) je zanemarljiva za praktične svrhe. Stranica nudi posebne prekidače za format – uključivanje velikih slova i uklanjanje crtica – koji su relevantni samo za UUID v4 i v7, dok drugi tipovi ID-ova koriste drugačije kontrole.
Na ovoj stranici možete odabrati format (UUID v4, v7, ULID, NanoID), postaviti broj identifikatora (od 1 do 100), uključiti velika slova (heksadecimalna slova a–f se prikazuju kao A–F) i isključiti crtice (tada niz postaje 32 heksadecimalna znaka). Svi ID-ovi se generišu trenutno u vašem pregledniku. Klikom na pojedinačni ID kopira se u međumemoriju; dugme "Kopiraj sve" kopira cijelu listu odjednom. Statusna poruka pokazuje "Ready." ili "Generated.", a nakon kopiranja svih "Copied all!".
Struktura UUID v4 i izvori nasumičnosti
UUID v4 je definisan u RFC 4122. Ukupno 128 bitova podijeljeno je na:
- 122 bita nasumičnih podataka – dolaze iz kriptografski sigurnog generatora slučajnih brojeva u pregledniku (npr.
crypto.randomUUIDilicrypto.getRandomValues). - 4 bita varijantnog polja – fiksno postavljeni na
10xx(binarno), što odgovara varijanti RFC 4122. - 2 bita verzijskog polja – fiksno postavljeni na
0100(binarno), što označava verziju 4.
Kanonski prikaz je u obliku 8‑4‑4‑4‑12 heksadecimalnih cifara, sa crticama na pozicijama 8, 13, 18 i 23. Na primjer: f47ac10b-58cc-4372-a567-0e02b2c3d479. Uklanjanjem crtica dobijate 32 heksadecimalna znaka: f47ac10b58cc4372a5670e02b2c3d479.
Uključivanje velikih slova pretvara sva heksadecimalna slova u verzale: F47AC10B-58CC-4372-A567-0E02B2C3D479. Ovo može biti korisno kada format očekuje određeni slučaj (npr. neki sistemi zahtijevaju velika slova), ali standard ne propisuje ništa – oba oblika su validna.
Generisanje se uvijek vrši na klijentskoj strani, koristeći jake izvore entropije operativnog sistema. Nema slanja podataka na server, što povećava privatnost i smanjuje kašnjenje.
Vjerovatnoća kolizije i praktične posljedice
Sa 122 bita nasumičnosti, broj mogućih UUID v4 vrijednosti je 2¹²² ≈ 5,3 × 10³⁶. To je astronomski velik broj. Kolizija (dvije identične vrijednosti) je praktično nemoguća za bilo koji realističan broj generisanih identifikatora. Prema formuli rođendanskog paradoksa, vjerovatnoća da dođe do kolizije među N nasumičnih UUID v4 iznosi približno 1 – exp(–N² / (2 × 2¹²²)). Čak i sa N = 10¹² (bilion identifikatora), vjerovatnoća je manja od 10⁻¹⁴.
Zbog toga se UUID v4 koristi u:
- Distribuiranim sistemima – gdje više čvorova nezavisno kreira identifikatore bez koordinacije.
- API tokenima i ID-ovima sesija – gdje je nepredvidljivost važna (ne želite da napadač pogodi sljedeći ID).
- Bezbjednosnim primjenama – jer vremenski bazirani ID-ovi (UUID v1, v7) otkrivaju približno vrijeme kreiranja.
Međutim, ova ista nasumičnost stvara problem u bazama podataka – objašnjeno u sljedećem odjeljku.
Uticaj na performanse baza podataka
Kada se UUID v4 koristi kao primarni ključ u relacionoj bazi koja koristi B-stablo indeks (kao što su PostgreSQL, MySQL, SQL Server), svaki novi red se upisuje na nasumičnu poziciju u indeksu. To uzrokuje:
- Fragmentaciju indeksa – stranice se često dijele, a nove se dodaju na različitim mjestima.
- Povećan broj I/O operacija – upisivanje novog ključa zahtijeva čitanje i pisanje više stranica indeksa.
- Lošiju lokalnost podataka – redovi koji su vremenski blizu (npr. kreirani u istoj sesiji) neće biti fizički blizu na disku.
Zbog toga se često preporučuje upotreba vremenski sortiranih UUID formata kao što su UUID v7 (definisan u novijem RFC-u) ili ULID. Opisani generator na ovoj stranici nudi i UUID v7 u padajućem meniju – ali UUID v4 ostaje bolji izbor kada vam je nepredvidljivost i odsustvo vremenske korelacije bitnija od brzine upisa.
Prilagođavanje formata: velika slova i crtice
Dva prekidača na stranici omogućavaju prilagođavanje izlaznog formata UUID v4:
Uključivanje velikih slova – kada je uključeno, heksadecimalna slova a, b, c, d, e, f prikazuju se kao A, B, C, D, E, F. Ovo je često potrebno u sistemima koji su osjetljivi na veličinu slova (case-sensitive) i očekuju gornji slučaj. Na primjer, neke datoteke ili baze podataka mogu da skladište UUID u formatu sa velikim slovima. Međutim, RFC 4122 ne propisuje slučaj – oba su validna.
Uklanjanje crtica – kada se crtice isključe, identifikator postaje niz od 32 heksadecimalna znaka bez separatora. Ovo je korisno kada trebate:
- Kompaktnu reprezentaciju – manje znakova za slanje putem URL-ova ili u zaglavljima HTTP-a.
- Direktno upisivanje u bazu koja ne podržava crtice (iako većina danas podržava i sa i bez).
- Upotrebu u datotečnim sistemima – gdje crtice mogu biti problematične (npr. u imenima fajlova).
Promjena bilo koje opcije (format, broj, velika slova, crtice) odmah ponovo generiše sve ID-ove. To omogućava brzo eksperimentisanje sa formatom bez dodatnih klikova.
Generisanje u pregledniku i privatnost
Sva generisanja se dešavaju isključivo u vašem pregledniku koristeći crypto.randomUUID (ili crypto.getRandomValues za starije preglednike). To znači:
- Nema mrežnog zahtjeva – ID-ovi su dostupni odmah, bez kašnjenja.
- Niti jedan podatak ne napušta vaš uređaj – apsolutna privatnost.
- Možete generisati do 100 identifikatora odjednom (ograničenje ove stranice; tehnički, bez ograničenja bi se mogle generisati hiljade, ali sučelje je dizajnirano za 1–100).
- Statusna poruka se ažurira: "Ready." (spremno) ili "Generated." (generisano), a nakon kopiranja svih vidite "Copied all!".
Klik na pojedinačni UUID kopira samo taj identifikator u međumemoriju. Ovo je korisno kada trebate jedan ključ za testiranje.
Ciljna publika i primjeri upotrebe
Ova stranica je namijenjena:
- Programerima aplikacija – koji trebaju veliki broj nasumičnih univerzalno jedinstvenih ključeva za objekte, sesije ili događaje.
- Projektantima baza podataka – svjesnim kompromisa u indeksiranju, koji trebaju standardni nasumični UUID za distribuirane sisteme bez centralne koordinacije.
- Bezbjednosnim inženjerima – kojima su potrebni identifikatori koji se ne mogu predvidjeti (npr. API tokeni, ID-ovi zahtjeva) i gdje vremenska korelacija nije poželjna.
- Testovima i generatorima podataka – koji popunjavaju uzorke baza sa realističnim jedinstvenim ključevima.
Primjer: Potrebno je generisati 50 UUID v4 za identifikaciju korisničkih sesija u testnom okruženju. Postavite broj na 50, isključite crtice (da biste smanjili dužinu), uključite velika slova. Kliknite "Kopiraj sve" i zalijepite u CSV datoteku. Svi ID-ovi su spremni za unos u bazu.
Često postavljana pitanja
Šta je UUID v4 i po čemu se razlikuje od UUID v7?
UUID v4 koristi 122 bita nasumičnosti i ne sadrži informaciju o vremenu. UUID v7 sadrži vremensku oznaku u prvih 48 bitova, pa se može sortirati po vremenu. V4 je potpuno nepredvidljiv, v7 je djelimično predvidljiv (može se otkriti približno vrijeme kreiranja).
Zašto se ne preporučuje UUID v4 kao primarni ključ u bazi?
Zbog nasumičnog redoslijeda fragmentira B-stablo indeks i usporava upis. Ako vam je brzina pisanja kritična, razmislite o UUID v7 ili ULID.
Koliko je siguran UUID v4 za kriptografske svrhe?
Koristi kriptografski sigurne nasumične brojeve iz preglednika (npr. crypto.randomUUID). Sa 122 bita entropije, nije praktično pogoditi sljedeći ID. Međutim, za najosjetljivije primjene (npr. tokeni za resetovanje lozinke) preporučuje se dodatna bezbjednosna mjera (kratak rok trajanja, validacija).
Zašto je maksimalan broj ID-ova 100?
Ograničenje je postavljeno zbog praktičnosti korisničkog sučelja – lista od 100 vrijednosti je i dalje pregledna. Ako vam treba više, možete ponoviti generisanje više puta.
Da li uklanjanje crtica smanjuje sigurnost?
Ne. Crtica su samo separator; uklanjanjem se ne mijenjaju stvarni nasumični bitovi. Dužina se smanjuje na 32 znaka, ali entropija ostaje 122 bita.
Mogu li generisati UUID v4 velikim slovima i bez crtica?
Da. Uključivanjem opcije "Uppercase" i isključivanjem "Include hyphens" dobijate niz od 32 heksadecimalna znaka u gornjem slučaju, npr. F47AC10B58CC4372A5670E02B2C3D479. Ovo je pogodno za sisteme koji očekuju takav format.