Skip to main content

Genera identificatori UUID v4 univoci.

Tutti i calcoli sono eseguiti localmente nel tuo browser. Nessun dato viene inviato al server.

I risultati hanno carattere informativo. Verificali con altre fonti.

UUID: che cosa significano le cifre

Un UUID è un identificatore da 128 bit scritto come 32 cifre esadecimali nello schema 8-4-4-4-12. La versione 4 — quella che genera questo strumento — riempie quasi tutti quei bit con dati casuali, così due valori generati in modo indipendente non coincidono praticamente mai.

Come funziona

  • Genera 128 bit, poi ne sovrascrive sei: quattro per registrare la versione (4) e due per la variante.
  • Restano 122 bit di casualità effettiva, da cui deriva la resistenza alle collisioni.
  • Formatta il risultato come 8-4-4-4-12 caratteri esadecimali separati da trattini.
  • Usa crypto.getRandomValues del browser, una sorgente crittograficamente sicura, non Math.random.
xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
                 ↑    ↑
         versione  variante (8, 9, a oppure b)

bit casuali = 128 − 6 = 122

Esempio pratico

Lettura di un vero UUID v4, posizione per posizione.

  1. f47ac10b-58cc-4372-a567-0e02b2c3d479
  2. posizione 15 (inizio del terzo gruppo): 4 → versione 4, generata casualmente
  3. posizione 20 (inizio del quarto gruppo): a → la variante RFC 4122
  4. gli altri 122 bit sono casuali
  5. probabilità di collisione: dopo un miliardo di UUID, circa 1 su 10^22

Occorrerebbe generare circa 2,7 × 10^18 UUID per arrivare al 50% di probabilità di una singola collisione: un numero abbastanza grande da rendere ogni duplicato un bug nel codice, non sfortuna.

Come leggere il risultato

  • Gli UUID v4 non si ordinano. Come chiave primaria disperdono le scritture nell'indice B-tree, lo frammentano e rallentano gli inserimenti su tabelle grandi. La versione 7, che mette un timestamp nei bit alti, è nata proprio per questo e si ordina cronologicamente.
  • Un UUID è un identificatore, non un segreto. In pratica è inindovinabile, ma trattarlo come token di accesso significa che chiunque lo veda in un URL, in un log o in un'intestazione referer possiede la chiave.
  • Conservali come 16 byte binari o in una colonna uuid nativa, non come stringa da 36 caratteri. La forma testuale più che raddoppia lo spazio e rallenta ogni confronto.
  • Le maiuscole non contano e i trattini sono formattazione. Confronta in forma canonica, altrimenti otterrai falsi disallineamenti tra sistemi.

Domande frequenti

Quali sono le probabilità reali di collisione?
Con 122 bit casuali, generare un miliardo di UUID al secondo per un secolo lascia trascurabile la probabilità di qualsiasi collisione. In pratica ogni UUID duplicato segnalato si rivela un generatore con seed fisso o un valore riutilizzato.
v4 o v7 per le chiavi di database?
v7 per tutto ciò che inserisci in volume, perché si ordina per data di creazione e mantiene sequenziali le scritture sull'indice. v4 resta la scelta giusta quando non vuoi che l'identificatore riveli quando è stato creato.