Generatore di UUID v4: identificatori casuali con 122 bit di entropia
Questo strumento genera identificatori UUID versione 4, stringhe casuali di 36 caratteri nel formato esadecimale standard 8‑4‑4‑4‑12. Ogni UUID è costruito con 122 bit di pura casualità: i restanti 6 bit sono fissi per indicare la versione (4) e la variante (RFC 4122). Contrariamente a identificatori ordinati nel tempo come UUID v7 o ULID, i valori UUID v4 non hanno alcuna relazione temporale – se usati come chiavi primarie in un database, frammentano gli indici B‑tree. La probabilità di collisione è trascurabile per qualunque applicazione pratica: con 100 miliardi di UUID generati, la probabilità di una collisione è circa 1 su 5,3 miliardi.
Il generatore permette di controllare il numero di UUID (da 1 a 100), l'uso di lettere maiuscole e la presenza dei trattini. Le modifiche a queste opzioni rigenerano immediatamente tutti gli identificatori. La generazione avviene interamente nel browser tramite API crittografiche (crypto.randomUUID o equivalenti), senza inviare dati a server.
Struttura tecnica di UUID v4
Un UUID versione 4 è una stringa di 128 bit, di cui 122 derivano da un generatore di numeri casuali. I 6 bit rimanenti sono fissi:
- 4 bit per la versione (posizione 13, valore
0100binario → cifra esadecimale4) - 2 bit per la variante (posizione 17, valori
10binario → cifra esadecimale8,9,aob)
Nel formato canonico con trattini, la stringa è composta da:
xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
dove x rappresenta un nibble (4 bit) casuale e y rappresenta un nibble che nei primi due bit vale 10 e nei restanti due è casuale (valori possibili: 8, 9, a, b).
Se i trattini sono rimossi, si ottiene una stringa di 32 caratteri esadecimali. Lo strumento permette di attivare o disattivare questa opzione. L'uso delle lettere maiuscole (A–F) è una scelta puramente estetica: sia a che A rappresentano lo stesso valore esadecimale e vengono gestiti correttamente da qualsiasi parser conforme allo standard.
La quantità di entropia di 122 bit significa che ogni UUID generato è, in pratica, indipendente da ogni altro: non esiste alcuna correlazione sequenziale.
Probabilità di collisione
Con 122 bit di casualità, lo spazio totale degli UUID v4 possibili è 2^122, circa 5,3 × 10^36. La probabilità di collisione è modellata dal problema del compleanno. Per n UUID generati, la probabilità approssimata di almeno una collisione è:
P ≈ 1 - e^(-n² / (2 × 2¹²²))
Alcuni esempi concreti:
| Numero di UUID generati | Probabilità di collisione |
|---|---|
| 1 milione | ~ 9,4 × 10^‹-20› |
| 1 miliardo | ~ 9,4 × 10^‹-14› |
| 1 trilione | ~ 9,4 × 10^‹-8› |
| 100 miliardi | ~ 1,9 × 10^‹-13› |
Per metterlo in prospettiva: se generassi un miliardo di UUID al secondo per 100 milioni di anni, la probabilità di trovare una collisione sarebbe ancora inferiore a quella di vincere due volte consecutive alla lotteria nazionale. Per applicazioni pratiche – anche con database distribuiti su milioni di nodi – la collisione è un evento da considerare solo a livello teorico.
Lo strumento genera UUID esclusivamente nel browser, utilizzando funzioni crittografiche sicure (CSPRNG). Non esiste alcuna condivisione di dati con il server, quindi l'entropia utilizzata è quella del sistema client.
Impatto sulle prestazioni dei database
Gli UUID v4 sono completamente casuali. Se utilizzati come chiave primaria clusterizzata in un database relazionale (ad esempio, PostgreSQL o MySQL con indice primario B-tree), ogni nuova riga viene inserita in una posizione arbitraria dell'albero. Questo causa:
- Frammentazione dell'indice: l'albero si riorganizza continuamente, aumentando il numero di split di pagina.
- Cache miss: le pagine calde diventano imprevedibili, riducendo l'efficienza del buffer pool.
- Degrado delle prestazioni in scrittura: per carichi elevati di inserimento, la velocità può calare del 50–80% rispetto a chiavi sequenziali.
Al contrario, identificatori temporali come UUID v7 (incluso nel menù a tendina di questo strumento) incorporano un timestamp nei primi 48 bit, garantendo una sequenzialità approssimata. Anche ULID e NanoID, presenti nello stesso menù, offrono diverse proprietà di ordinamento. La scelta tra questi formati dipende dal contesto:
- UUID v4: quando serve massima indipendenza distribuita e non è importante l'ordine.
- UUID v7: quando si vuole compatibilità con UUID e ordinamento temporale.
- ULID: quando si vuole compattezza (26 caratteri base32) e ordinamento.
- NanoID: quando la lunghezza variabile è accettabile e si richiede massima flessibilità.
Il generatore offre tutti e quattro i formati, ma la pagina specifica per UUID v4 permette di regolare solo le opzioni rilevanti per questo formato: maiuscole e trattini.
Personalizzazione del formato: maiuscole e trattini
Due opzioni specifiche per UUID v4 (e v7) sono l'attivazione delle lettere maiuscole e la rimozione dei trattini. Ecco quando ha senso usarle.
Maiuscole (A–F): Lo standard RFC 4122 non impone una capitalizzazione specifica. Alcuni sistemi legacy o regole aziendali richiedono maiuscolo per coerenza visiva. Altri usano minuscolo per compatibilità con URL case-sensitive. L'impostazione è puramente cosmetica: il valore numerico non cambia.
Rimozione dei trattini: I trattini nel formato canonico (8-4-4-4-12) servono solo a migliorare la leggibilità umana. Rimuoverli produce una stringa di 32 caratteri esadecimali. Questo è utile quando l'UUID deve essere utilizzato in contesti dove i trattini sono vietati o ineleganti:
- Nomi di file
- Parametri URL (più compatti, meno caratteri da percent-encode)
- Token di autenticazione in header HTTP
- Chiavi in sistemi di storage key-value
- Campi di database che richiedono lunghezza fissa senza caratteri speciali
Lo strumento rigenera immediatamente tutti gli UUID quando una qualsiasi opzione viene modificata. Non esiste uno stato "non aggiornato": il risultato è sempre sincrono con le impostazioni correnti.
Chi ha bisogno di UUID v4
Questi identificatori sono adatti a scenari dove la casualità non sequenziale è un vantaggio.
Sviluppatori di applicazioni distribuite: In un sistema senza un coordinatore centrale (ad esempio, microservizi, database offline-first), ogni nodo deve poter generare identificatori univoci senza consultare gli altri. UUID v4 elimina ogni necessità di sincronizzazione.
Ingegneri della sicurezza: Gli UUID v4 non rivelano alcuna informazione sul momento di creazione o sulla sorgente. Sono adatti per token di sessione, ID di richiesta, e identificatori di risorse che non devono essere enumerabili. Un attaccante non può prevedere il prossimo UUID e non può dedurre il numero di risorse esistenti da un campione.
Progettisti di database con partizionamento geografico: La casualità di UUID v4 distribuisce uniformemente le scritture tra i diversi nodi di un cluster, evitando colli di bottiglia su un singolo server caldo (fenomeno comune con chiavi sequenziali).
Tester e generatori di dati di esempio: Popolare un database di test con UUID realistici è semplice: basta cliccare "Genera" e copiare tutti gli identificatori in blocco. Il conteggio massimo di 100 per generazione è sufficiente per la maggior parte degli scenari di test.
FAQ
1. Quanti UUID v4 posso generare contemporaneamente?
È possibile generare da 1 a 100 UUID per volta. Il conteggio è un numero intero: non sono accettati valori esterni a questo intervallo. Modificando il conteggio, gli UUID vengono rigenerati automaticamente.
2. Come copio un singolo UUID?
Fai clic su uno qualsiasi degli UUID generati. Viene copiato immediatamente negli appunti. Lo strumento mostra anche un pulsante "Copia tutti" che copia l'intero elenco come testo separato da ritorni a capo.
3. Qual è la differenza tra maiuscole e minuscole?
Nessuna differenza funzionale. L'opzione "Uppercase" trasforma i caratteri esadecimali a-f in A-F. Il valore esadecimale rimane identico. Scegli in base alle convenzioni del tuo progetto.
4. È sicuro generare UUID sensibili con questo strumento?
La generazione avviene interamente nel browser utilizzando l'API crypto.getRandomValues() – un generatore di numeri pseudo-casuali crittograficamente sicuro. Nessun dato viene inviato al server. Per usi che richiedono massima sicurezza, è consigliabile eseguire lo strumento in una finestra di navigazione privata o in un ambiente isolato.
5. Perché rimuovere i trattini?
I trattini non fanno parte del valore numerico dell'UUID, sono solo una comodità visiva. Rimuoverli rende la stringa più compatta (32 caratteri invece di 36) e priva di caratteri speciali, utile per URL, nomi di file e campi di database che non accettano trattini.
6. Quali formati sono disponibili oltre a UUID v4?
Il menù a tendina include anche UUID v7, ULID e NanoID. Ognuno ha caratteristiche di ordinamento, lunghezza e casualità differenti. UUID v4 è l'unico con 122 bit di pura casualità e senza componente temporale.