Hopp til innholdet
Quaestio

UUID

Lag tilfeldige identifikatorer av versjon 4, i den skrivemåten du trenger.

Identifikatorer

    Tilfeldigheten hentes fra nettleserens kryptografiske kilde, og ingenting sendes videre.

    Bygg inn

    Bygg inn verktøyet på nettstedet ditt

    Kopier koden og lim den inn der verktøyet skal vises, for eksempel i et blogginnlegg eller på en skoleside. Det er gratis, boksen har ingen annonser, og verktøyet regner i besøkerens nettleser.

    Slik fungerer det

    En UUID er en identifikator på 128 bit, skrevet som 32 heksadesimale tegn i fem grupper skilt med bindestreker.

    Versjon 4 består av tilfeldige bit, bortsett fra seks bit som angir versjon og variant. Det gir 122 bit tilfeldighet, altså drøyt fem sekstiljoner mulige verdier, altså 5,3 × 10³⁶.

    Med så mange muligheter trenger ingen sentral instans å dele ut identifikatorene. To systemer kan lage hver sin uten å spørre hverandre, og risikoen for at de kolliderer, er forsvinnende liten.

    Tilfeldigheten kommer fra nettleserens kryptografiske tilfeldighetskilde, som finnes nettopp for verdier som skal være umulige å gjette.

    Skrivemåten med store bokstaver eller klammer stammer fra Windows-verdenen. Det er den samme identifikatoren, bare skrevet på en annen måte.

    Slik lages identifikatorene

    Verktøyet kaller nettleserens crypto.randomUUID, som etter W3Cs Web Cryptography API lager en UUID av versjon 4 av kryptografisk sikre tilfeldige byte. I eldre nettlesere som mangler funksjonen, fyller verktøyet selv 16 byte med crypto.getRandomValues og skriver deretter over seks bit: den øvre halvdelen av byte nummer 7 blir 0100, som betyr versjon 4, og de to øverste bitene i byte nummer 9 blir 10, som angir varianten. Opptil 100 identifikatorer lages per runde. Valgene for store bokstaver, klammer og bindestreker endrer bare hvordan verdiene skrives, ikke selve verdiene.

    Slik kjenner du igjen versjon 4

    De låste bitene synes i teksten. Det første tegnet i den tredje gruppen er alltid 4. Det første tegnet i den fjerde gruppen er 8, 9, a eller b, fordi bare to av de fire bitene der er låst. I 5b98d7bd-c376-4f0c-95a6-a824486e7976, laget med verktøyets egen kode, er disse tegnene 4 og 9. Står det noe annet på de plassene, er identifikatoren ikke av versjon 4. RFC 9562 tillater at bokstavene skrives som store, små eller blandede.

    Grensetilfeller

    En UUID er en identifikator, ikke en hemmelighet. RFC 9562 sier at man ikke bør anta at UUID-er er vanskelige å gjette, og at de ikke må brukes som tilgangsbevis, altså identifikatorer der det å ha dem i seg selv gir tilgang. En lenke for å tilbakestille et passord trenger et token som er laget for akkurat det.

    Som nøkkel i en database har versjon 4 en ulempe som standarden selv peker på: verdier som lages etter hverandre, havner langt fra hverandre i indeksen, så hver ny rad skrives inn på et tilfeldig sted. Versjon 7 begynner med et tidsstempel og havner derfor i den rekkefølgen verdiene ble laget. Verktøyet lager bare versjon 4.

    To verdier har egne navn i standarden: null-UUID, med bare nuller, og maks-UUID, med bare f. Ingen av dem kan komme ut av verktøyet, fordi versjons- og variantbitene alltid er satt.

    Kilder

    Slik kontrolleres verktøyene