Naar de inhoud
Quaestio

UUID

Genereer willekeurige identificatiecodes van versie 4 in de schrijfwijze die je nodig hebt.

Identificatiecodes

    Het toeval komt uit de cryptografische bron van de browser, en er wordt niets doorgestuurd.

    Insluiten

    Deze tool op je eigen site insluiten

    Kopieer de code en plak die waar de tool moet verschijnen, bijvoorbeeld in een blogbericht of op een schoolpagina. Het is gratis, het kader heeft geen advertenties en de tool rekent in de browser van de bezoeker.

    Zo werkt het

    Een UUID is een identificatiecode van 128 bits, geschreven als 32 hexadecimale tekens in vijf groepen, gescheiden door koppeltekens.

    Versie 4 bestaat uit willekeurige bits, op zes bits na die de versie en de variant aangeven. Dat geeft 122 bits toeval, dus ruim vijf sextiljoen mogelijke waarden, oftewel 5,3 × 10³⁶.

    Bij zoveel mogelijkheden hoeft geen centrale instantie de codes uit te delen. Twee systemen kunnen er elk een maken zonder overleg, en de kans op een botsing is verwaarloosbaar klein.

    Het toeval komt uit de cryptografische toevalsbron van de browser, die er juist is voor waarden die niet te raden mogen zijn.

    De schrijfwijze met hoofdletters of accolades komt uit de Windowswereld. Het is dezelfde code, alleen anders geschreven.

    Zo worden de codes gemaakt

    De tool roept crypto.randomUUID van de browser aan, die volgens de Web Cryptography API van het W3C een UUID van versie 4 maakt uit cryptografisch veilige willekeurige bytes. In oudere browsers zonder die functie vult de tool zelf 16 bytes met crypto.getRandomValues en overschrijft daarna zes bits: de bovenste helft van de zevende byte wordt 0100, wat versie 4 betekent, en de twee hoogste bits van de negende byte worden 10, wat de variant aangeeft. Per keer worden er tot 100 codes gemaakt. De keuzes voor hoofdletters, accolades en koppeltekens veranderen alleen hoe de waarden worden geschreven, niet de waarden zelf.

    Zo herken je versie 4

    De vaste bits zijn in de tekst te zien. Het eerste teken van de derde groep is altijd 4. Het eerste teken van de vierde groep is 8, 9, a of b, omdat maar twee van de vier bits vastliggen. In c3431ee8-4dd9-4038-b998-71210a2ffb2b, gemaakt met de code van de tool zelf, zijn die tekens 4 en b. Staat er op die plaatsen iets anders, dan is de code geen versie 4. RFC 9562 staat toe dat de letters als hoofdletters, als kleine letters of door elkaar worden geschreven.

    Randgevallen

    Een UUID is een identificatiecode, geen geheim. RFC 9562 zegt dat je er niet van moet uitgaan dat UUID’s moeilijk te raden zijn, en dat ze niet als toegangsbewijs mogen dienen, dus als code waarvan het bezit alleen al toegang geeft. Een link om een wachtwoord te herstellen heeft een token nodig dat daarvoor is ontworpen.

    Als sleutel in een database heeft versie 4 een nadeel dat de standaard zelf noemt: waarden die na elkaar worden gemaakt, komen ver uit elkaar in de index terecht, dus elke nieuwe rij wordt op een willekeurige plek ingevoegd. Versie 7 begint met een tijdstempel en staat daardoor in de volgorde waarin de waarden zijn gemaakt. De tool maakt alleen versie 4.

    Twee waarden hebben in de standaard een eigen naam: de nil-UUID, met alleen nullen, en de max-UUID, met alleen f. Geen van beide kan uit de tool komen, omdat de versie- en variantbits altijd zijn gezet.

    Bronnen

    Zo worden de tools gecontroleerd