UUID
Lav tilfældige identifikatorer af version 4 i den skrivemåde, du har brug for.
Identifikatorer
Tilfældigheden hentes fra browserens kryptografiske kilde, og intet sendes videre.
Sådan virker det
En UUID er en identifikator på 128 bit, skrevet som 32 hexadecimale tegn i fem grupper adskilt af bindestreger.
Version 4 består af tilfældige bit bortset fra seks bit, der angiver version og variant. Det giver 122 bit tilfældighed, altså godt fem sekstillioner mulige værdier, altså 5,3 × 10³⁶.
Med så mange muligheder behøver ingen central instans at uddele identifikatorerne. To systemer kan lave hver sin uden at spørge hinanden, og risikoen for, at de kolliderer, er forsvindende lille.
Tilfældigheden kommer fra browserens kryptografiske tilfældighedskilde, der findes netop til værdier, som skal være umulige at gætte.
Skrivemåden med store bogstaver eller klammer stammer fra Windows-verdenen. Det er den samme identifikator, bare skrevet på en anden måde.
Sådan laves identifikatorerne
Værktøjet kalder browserens crypto.randomUUID, som ifølge W3C’s Web Cryptography API laver en UUID af version 4 ud fra kryptografisk sikre tilfældige byte. I ældre browsere uden den funktion fylder værktøjet selv 16 byte med crypto.getRandomValues og overskriver derefter seks bit: den øverste halvdel af byte nummer 7 bliver 0100, som betyder version 4, og de to øverste bit i byte nummer 9 bliver 10, som angiver varianten. Der laves op til 100 identifikatorer ad gangen. Valgene for store bogstaver, klammer og bindestreger ændrer kun skrivemåden, ikke selve værdierne.
Sådan genkender du version 4
De låste bit kan ses i teksten. Det første tegn i den tredje gruppe er altid 4. Det første tegn i den fjerde gruppe er 8, 9, a eller b, fordi kun to af dets fire bit er låst. I 68b4f685-a54d-4a87-acab-dbb29802a56f, lavet med værktøjets egen kode, er de tegn 4 og a. Står der noget andet på de pladser, er identifikatoren ikke af version 4. RFC 9562 tillader, at bogstaverne skrives med store, små eller blandede bogstaver.
Grænsetilfælde
En UUID er en identifikator, ikke en hemmelighed. RFC 9562 siger, at man ikke bør gå ud fra, at UUID-er er svære at gætte, og at de ikke må bruges som adgangsbevis, altså identifikatorer, hvor det at have dem i sig selv giver adgang. Et link til at nulstille en adgangskode skal have et token, der er lavet netop til det.
Som nøgle i en database har version 4 en ulempe, som standarden selv peger på: værdier, der laves efter hinanden, havner langt fra hinanden i indekset, så hver ny række skrives ind et tilfældigt sted. Version 7 begynder med et tidsstempel og havner derfor i den rækkefølge, værdierne blev lavet. Værktøjet laver kun version 4.
To værdier har egne navne i standarden: nil-UUID, med lutter nuller, og max-UUID, med lutter f. Ingen af dem kan komme ud af værktøjet, fordi versions- og variantbittene altid er sat.