UUID v4 -generaattori

Luo UUID v4 -arvoja verkossa: 122 satunnaista bittiä, standardi UUID-muoto ja kopiointivalmiit tulokset suoraan selaimessasi.

Muoto
Luodut tunnisteet
Valmis. Luo UUID v4 -arvoja selaimessasi.

Miten tämä tunniste muodostuu

Rakenne
128-bittinen UUID versiolla 4 ja RFC-varianttibiteillä, esitettynä 8-4-4-4-12 heksadesimaaliryhminä.
Entropia
122 satunnaista bittiä crypto.randomUUID()-funktiosta.
Aika
Ei ole; v4-tunnisteet eivät paljasta, milloin ne on luotu.
Törmäysriski
Törmäyksiä hallitsee 122 satunnaista bittiä, mikä ylittää moninkertaisesti normaalien järjestelmien käytännön tarpeet.
Esimerkki
605d118f-da92-463e-98aa-bfee43fcbd14

Tunnisteesi luodaan paikallisesti selaimen vahvalla satunnaisgeneraattorilla. Mitään ei lähetetä BroBroGo-palveluun.

Usein kysytyt kysymykset

Milloin minun pitäisi käyttää UUID v4 -tunnistetta?

Käytä UUID v4 -tunnistetta, kun tarvitset läpinäkymättömiä satunnaisia tunnisteita, joita ei lajitella luontiajan mukaan ja jotka eivät paljasta ajoitustietoja.

Voinko poistaa yhdysviivat tai muuttaa tulosteen suuraakkosiksi?

Kyllä. UUID v4 -työkalussa on asetusosio, josta voit poistaa yhdysviivat tai muuttaa tulosteen suuraakkosiksi.

UUID v4 -generaattori: 122 satunnaisbittiä ilman aikaleimaa

Tällä sivulla luodaan yksi tai useampi UUID v4 -tunniste – 36-merkkisiä satunnaismerkkijonoja standardimuodossa 8‑4‑4‑4‑12 heksadesimaalilukuna. Säädettävissä ovat määrä (1–100), isojen kirjainten käyttö ja väliviivojen sisällyttäminen. Tunnisteet ilmestyvät selaimessa välittömästi, ja yksittäisen tunnisteen voi kopioida napsauttamalla sitä tai kaikki kerralla. Tärkein ero muihin ID-tyyppeihin on, että UUID v4 käyttää 122 bittiä puhdasta satunnaisuutta tunnistetta kohti (loput 6 bittiä ovat kiinteitä versio- ja varianttibittejä). Ne eivät sisällä aikaa eikä järjestystietoa, joten ne pirstaloivat B-puuindeksejä toisin kuin ajan mukaan lajitellut formaatit. Törmäystodennäköisyys on käytännössä olematon.

UUID v4:n rakenne: 128 bittiä, joista 122 on vapaita

UUID v4 määritellään RFC 4122 -standardissa. 128-bittinen tunniste koostuu seuraavista kentistä:

Bittialue Pituus (bittejä) Käyttö
0–31 32 Satunnaisluku
32–47 16 Satunnaisluku
48–51 4 Versio (0100, eli arvo 4)
52–63 12 Satunnaisluku
64–65 2 Variantti (10, eli RFC 4122)
66–127 62 Satunnaisluku

Yhteensä satunnaisia bittejä on 32 + 16 + 12 + 62 = 122 bittiä. Versiobitit (4 bittiä) ja varianttibitit (2 bittiä) ovat kiinteitä ja takaavat, että tunniste tunnistetaan UUID v4:ksi. Tämä tarkoittaa, että jokaista generoitua UUID v4 -tunnistetta kohti on 2^122 mahdollista arvoa – luku on noin 5,3 × 10^36. Käytännössä tämä tekee törmäyksestä äärimmäisen epätodennäköisen: jos generoit 1 miljardi UUID v4 -tunnistetta sekunnissa, kestäisi satoja miljardeja vuosia ennen kuin törmäys olisi todennäköinen.

Standardin mukainen esitysmuoto on 36 merkkiä: 8 heksadesimaalimerkkiä, väliviiva, 4 merkkiä, väliviiva, 4 merkkiä (jossa ensimmäinen versiobitti on aina 4), väliviiva, 4 merkkiä (jossa ensimmäiset kaksi varianttibittiä ovat 10, eli 8, 9, a tai b heksadesimaalina), väliviiva, 12 merkkiä. Esimerkki: f47ac10b-58cc-4372-a567-0e02b2c3d479. Tästä tunnisteesta versio on 4 (toinen ryhmän alku) ja variantti on a (kolmannen ryhmän alku).

Törmäysriski ja satunnaisuus: miksi 122 bittiä riittää

Törmäystodennäköisyys UUID v4:ssä on niin pieni, että se voidaan käytännössä unohtaa. Syntymäpäiväparadoksin mukaan 50 %:n törmäystodennäköisyys saavutetaan vasta noin 2^61 tunnisteella – luku on noin 2,3 × 10^18. Jos maapallolla olisi 10 miljardia UUID v4 -tunnistetta jokaista ihmistä kohti, törmäyksen todennäköisyys olisi edelleen alle 1 %. Tämä tekee UUID v4:stä ihanteellisen järjestelmiin, joissa tunnisteita luodaan hajautetusti ilman keskitettyä koordinaatiota.

Sivun generaattori käyttää selaimen crypto.randomUUID- tai crypto.getRandomValues-rajapintaa, jotka tuottavat kryptografisesti vahvaa satunnaisuutta. Tämä on tärkeää erityisesti tietoturvasovelluksissa: heikko satunnaisuus (kuten Math.random()) voi altistaa ennustettavuudelle. Kaikki generointi tapahtuu paikallisesti selaimessa – tunnisteita ei lähetetä palvelimelle, mikä parantaa yksityisyyttä ja vähentää latenssia.

Tietokantaindeksoinnin kompastuskivet

UUID v4:n suurin heikkous on sen vaikutus tietokantojen indeksointiin. Koska tunnisteet ovat täysin satunnaisia, ne eivät ole peräkkäisiä eivätkä ajan mukaan lajiteltuja. Kun niitä käytetään pääavaimena (primary key) B-puurakenteisessa indeksissä (kuten MySQL:n InnoDB, PostgreSQL:n oletusindeksi), tapahtuu seuraavaa:

  • Indeksin pirstaloituminen: Uudet tunnisteet osuvat satunnaisiin kohtiin indeksipuuta, mikä pakottaa puun tasapainottamaan itseään usein. Tämä aiheuttaa sivun jakautumisia (page splits) ja lisää levykirjoituksia.
  • Huono välimuistilokaliteetti: Peräkkäiset lisäykset eivät koskaan osu lähekkäisiin indeksipaikkoihin, joten välimuisti (buffer pool) ei pysty hyödyntämään sivulatauksia tehokkaasti.
  • Hitaampi lisäysnopeus: Testit ovat osoittaneet, että UUID v4 -pääavaimella varustettu taulu voi olla 20–40 % hitaampi kirjoitusoperaatioissa verrattuna kokonaislukupääavaimeen, erityisesti suurilla tietomäärillä.

Tästä syystä monet tietokantasuunnittelijat suosivat UUID v7:ää tai ULID:ä, jotka sisältävät aikaleiman ja ovat siten lajiteltavissa. UUID v4 on kuitenkin ylivoimainen, kun tarvitaan:

  • Tunnisteita, joista ei voi päätellä luomisajankohtaa (esim. käyttäjätunnukset)
  • Täysin ennustamattomia tunnisteita (turvallisuus sovelluksissa)
  • Hajautettua luomista ilman aikatahon synkronointia

Satunnaisuuden muokkaaminen: isot kirjaimet ja väliviivat

Sivulla on kaksi formaatinmuokkaustogglea, jotka ovat ominaisia UUID v4:lle (ja v7:lle); muut ID-tyypit (ULID, NanoID) käyttävät eri kontrolloja.

Isot kirjaimet vaikuttavat heksadesimaalilukujen esitykseen. Vakiomuodossa UUID v4 käyttää pieniä kirjaimia (a–f), mutta isoja kirjaimia (A–F) tarvitaan yhteensopivuuteen järjestelmien kanssa, jotka odottavat isoa kirjainmuotoa. Tämä on puhdas esitystapavalinta – se ei vaikuta tunnisteen numeeriseen arvoon eikä törmäysriskiin. Jotkin vanhat järjestelmät tai tietokannat saattavat vaatia isoja kirjaimia, kun taas toiset käsittelevät molemmat oikein.

Väliviivat ovat standardin mukaisia ja parantavat luettavuutta. Jos väliviivat poistetaan, tunnisteesta tulee 32 heksadesimaalimerkkiä (esim. f47ac10b58cc4372a5670e02b2c3d479). Tämä on käytännöllistä, kun tunnistetta käytetään URL-osoitteissa tai tiedostonimissä, joissa väliviivat voivat aiheuttaa ongelmia. Huomaa, että väliviivojen poistaminen ei muuta tunnisteen sisältöä – kyse on puhtaasta serialisaatiomuutoksesta. Sivulla generaattori ottaa muutokset käyttöön välittömästi: jos vaihdat määrää, kirjainkokoa tai väliviiva-asetusta, kaikki tunnisteet luodaan uudelleen.

Kenelle tämä on hyödyllistä ja milloin

UUID v4 on erityisen hyvä valinta seuraavissa tilanteissa:

  • Sovelluskehittäjät: Tarvitset suuren määrän uniikkeja tunnisteita olioille, istunnoille tai tapahtumille ilman tarvetta koordinoida luomista useiden palvelimien välillä.
  • Tietokantasuunnittelijat: Olet tietoinen indeksoinnin kompromisseista ja tarvitset satunnaistunnisteita hajautettuihin järjestelmiin, joissa aikaleimat eivät ole luotettavia.
  • Tietoturva-asiantuntijat: Tarvitset arvaamattomia tunnisteita (esim. API-avaimet, pyyntötunnisteet), joissa aikaperusteinen korrelaatio ei ole toivottavaa.
  • Testaajat ja datan luojat: Täytät testitietokantoja realistisilla, uniikeilla avaimilla.

Vertaile tätä muihin ID-formaatteihin:

Formaatti Satunnaisuus Aikaleima Lajiteltavuus Törmäysriski
UUID v4 122 bittiä Ei Ei Käytännössä 0
UUID v7 74 bittiä Kyllä Kyllä (ms) Pieni
ULID 80 bittiä Kyllä Kyllä (ms) Pieni
NanoID 126 bittiä (oletus) Ei Ei Riippuu pituudesta

Usein kysytyt kysymykset

Voiko UUID v4 -tunnistetta käyttää turvallisesti salasanana? Ei. Vaikka UUID v4 on 122 satunnaisbittiä, se on standardin mukainen eikä sisällä erikoismerkkejä. Salasanoissa tulisi käyttää erityisesti tähän tarkoitukseen suunniteltuja generaattoreita, jotka tuottavat riittävän enropian ja merkkivalikoiman. UUID v4 sopii kuitenkin hyvin esimerkiksi API-avaimiksi, joissa tarvitaan ennustamatonta merkkijonoa.

Miksi UUID v4 -tunnisteet ovat niin pitkiä? Pituus johtuu standardin vaatimuksesta 128 bittiä, joista 122 on satunnaisia. 36 merkin pituus (tai 32 ilman väliviivoja) on kompromissi luettavuuden ja entropian välillä. Lyhyemmät tunnisteet (kuten NanoID) tarjoavat vähemmän satunnaisuutta, mutta voivat olla kätevämpiä URL-osoitteissa.

Voiko UUID v4 -tunnisteita luoda ilman selainta? Kyllä, esimerkiksi Pythonin uuid-moduulilla (uuid.uuid4()), Node.js:n crypto.randomUUID()-funktiolla tai komentorivityökalulla uuidgen. Tämä sivu tarjoaa nopean ja konfiguroitavan tavan tehdä se selaimessa.

Mitä tapahtuu, jos valitsen määräksi 0 tai 101? Sivun käyttöliittymä rajoittaa määrän välille 1–100. Jos yrität syöttää arvon tämän ulkopuolelta, generaattori ei hyväksy sitä. Tämä on tarkoituksellinen rajoitus, joka estää vahingossa tapahtuvan liiallisen määrän muodostamisen.

Ovatko kaikki UUID v4 -tunnisteet uniikkeja maailmanlaajuisesti? Käytännössä kyllä, vaikka teoreettinen törmäysmahdollisuus on olemassa. 122 bitin satunnaisuus tarkoittaa, että jokainen generoitu tunniste on ainutlaatuinen todennäköisyydellä, joka on lähellä yhtä. Jos törmäys tapahtuu, se johtuu todennäköisemmin generaattorin virheestä kuin satunnaisuuden puutteesta.

Voinko käyttää UUID v4 -tunnisteita URL-osoitteissa? Kyllä, mutta on suositeltavaa poistaa väliviivat, jotta osoite on lyhyempi ja yhteensopiva kaikkien selainten ja palvelinten kanssa. UUID v4 -tunnisteet sisältävät vain heksadesimaalimerkkejä (0–9, A–F) ja mahdollisesti väliviivoja, joten ne ovat URL-turvallisia ilman erityistä koodausta.