Generatore di UUID
Come funziona
Scegli una versione e quanti identificatori ti servono (da 1 a 1.000): la lista si genera subito, un UUID per riga, pronta da copiare nel codice, in uno script di seed del database o in un foglio di calcolo. Attiva Maiuscole o togli i Trattini se il sistema di destinazione vuole un altro formato, e premi Rigenera per un nuovo blocco.
Un UUID (Universally Unique Identifier, chiamato GUID nel mondo Microsoft) è un valore a 128 bit scritto in 36 caratteri: gruppi di otto, quattro, quattro, quattro e dodici cifre esadecimali, come `3f2b8a4e-9c1d-4e7a-b2f6-8d1c9a0e5b3d`. La prima cifra del terzo gruppo è la versione; il gruppo successivo inizia sempre con 8, 9, a o b (i bit di variante di RFC 9562).
Ci sono tutte e quattro le versioni che si usano davvero: • v4 (casuale): 122 bit casuali dal generatore crittografico del browser. La scelta predefinita per token, ID e nomi di file. • v7 (ordinato nel tempo): un timestamp Unix in millisecondi a 48 bit seguito da bit casuali, quindi gli ID si ordinano per data di creazione. È la scelta migliore per le chiavi primarie di un database: le nuove righe finiscono in fondo all'indice invece di sparpagliarsi, e i B-tree restano compatti con inserimenti veloci. • v1 (timestamp + nodo): la struttura classica degli anni '90, un timestamp a 60 bit contato in intervalli di 100 nanosecondi dal 15 ottobre 1582, più un identificativo del nodo. Un tempo il nodo era l'indirizzo MAC della macchina, ed è proprio per questo che v1 rivelava l'hardware. Un browser non può leggere il MAC, quindi lo strumento usa un nodo casuale con il bit multicast attivo, la sostituzione prevista esplicitamente da RFC 9562 §6.10. Per i sistemi nuovi preferisci v7; v1 è qui per la compatibilità con schemi esistenti. • v5 (basato su un nome, SHA-1): deterministico. Calcola l'hash di un UUID di namespace insieme a un nome, quindi gli stessi input danno *sempre* lo stesso UUID, su qualsiasi macchina e per sempre. Usalo per ricavare ID stabili da qualcosa che hai già (un URL, un dominio, un percorso di file, il nome di un cliente) senza una tabella di corrispondenza. Scegli uno dei quattro namespace standard (DNS, URL, OID, X500) o incolla il tuo. Siccome il risultato dipende solo dagli input, per v5 il campo Quanti sparisce: la risposta è una sola.
(v3 è la stessa idea di v5 ma usa MD5: non c'è perché MD5 non è disponibile nella crypto API del browser e v5 lo sostituisce. v2 è una variante DCE Security che non usa quasi nessuno, e v6 e v8 sono di nicchia.)
Tutto gira nel browser: gli ID vengono dalla crypto API del tuo browser e non passano mai da un server, ed è questo che li rende adatti sia a segreti sia a identificatori interni.
Domande frequenti
Che differenza c'è tra UUID v4 e v7?
- v4 è fatto di 122 bit di pura casualità crittografica; v7 inizia con un timestamp Unix in millisecondi a 48 bit seguito da bit casuali, quindi gli ID v7 si ordinano cronologicamente. Usa v7 per le chiavi primarie di un database (indici più compatti, inserimenti più veloci) e v4 quando gli ID non devono rivelare quando sono stati creati.
Come generare più UUID insieme?
- Scrivi il numero nel campo Quanti, fino a 1.000, e la lista compare subito, un UUID per riga. Il pulsante Copia li copia tutti insieme separati da un a capo, pronti da incollare in un foglio di calcolo o in uno script SQL. Rigenera crea un nuovo blocco con le stesse impostazioni.
Perché v1 non usa il mio indirizzo MAC?
- Perché il browser non ha accesso al MAC, ed è un pregio più che una mancanza. Rivelare il MAC era il difetto noto di v1 (è così che nel 1999 si risalì all'autore del virus Melissa). RFC 9562 §6.10 permette di sostituirlo con un identificativo di nodo casuale con il bit multicast attivo, ed è quello che fa questo strumento come ogni implementazione JavaScript. Gli UUID sono v1 validi e funzionano normalmente.
Quando usare v5 invece di v4?
- Quando vuoi che lo stesso input dia sempre lo stesso ID. Ricavare un UUID stabile da un URL, un dominio, un percorso o il nome di un cliente permette a qualsiasi servizio di calcolare lo stesso ID da solo, senza database condiviso né tabella di corrispondenza. Usa v4 quando serve imprevedibilità: chiunque conosca namespace e nome può riprodurre un v5, quindi non va mai usato come segreto o token.
Quali sono i namespace standard di v5?
- RFC 9562 ne definisce quattro: DNS (6ba7b810-…) per i nomi host, URL (6ba7b811-…) per gli URL, OID (6ba7b812-…) per gli object identifier ISO e X500 (6ba7b814-…) per i distinguished name X.500. Puoi anche usare un UUID tuo come namespace privato, scegliendo Personalizzato…, che è l'approccio abituale dentro un'applicazione.
Due UUID generati possono coincidere?
- In teoria sì, in pratica no. Con v4 dovresti generarne circa 2,7×10¹⁸ per arrivare al 50% di probabilità di una sola collisione. Ogni ID qui viene prodotto dal generatore casuale crittograficamente sicuro del browser, della stessa qualità che userebbe una libreria lato server.
GUID e UUID sono la stessa cosa?
- Sì. GUID (Globally Unique Identifier) è il nome che Microsoft dà alla stessa struttura a 128 bit di RFC 9562. .NET, SQL Server e le API di Windows dicono GUID; quasi tutti gli altri dicono UUID. I formati sono identici byte per byte.
Perché togliere i trattini?
- Perché alcuni sistemi salvano o confrontano gli UUID come semplice stringa esadecimale di 32 caratteri: le colonne RAW(16) di Oracle, alcune API REST, gli slug negli URL dove i trattini sono solo rumore. Disattivando Trattini ottieni gli stessi 128 bit senza separatori, e qualsiasi parser standard li sa reinserire.
Gli UUID generati vengono inviati a un server?
- No. La generazione usa la Web Crypto API nella scheda del browser, e la pagina non fa richieste di rete quando generi o copi. Puoi verificarlo nella scheda Rete degli strumenti per sviluppatori. Per questo gli ID si possono usare come segreti, suffissi di chiavi API o dati di seed.
Quale versione produce crypto.randomUUID()?
- Solo v4. Questo strumento usa quell'API integrata per v4 e implementa v7 di RFC 9562 sopra crypto.getRandomValues: la stessa fonte di casualità, con in più il prefisso del timestamp.
Versioni di UUID in breve
Le versioni che incontrerai davvero e quando scegliere ciascuna. Il segno ✓ indica le versioni che questo strumento genera.
| Versione | Costruito da | Ordinabile nel tempo | Uso tipico |
|---|---|---|---|
| v1 ✓ | Timestamp (dal 1582) + ID del nodo | Sì | Schemi esistenti. In origine rivelava il MAC; qui il nodo è casuale come da RFC 9562 §6.10 |
| v3 | Hash MD5 di namespace + nome | No | Sostituito da v5. Non disponibile: MD5 manca nella crypto API del browser |
| v4 ✓ | 122 bit casuali | No | La scelta predefinita: token, ID, nomi di file |
| v5 ✓ | Hash SHA-1 di namespace + nome | No | ID deterministici: gli stessi input danno sempre lo stesso UUID. Mai come segreto |
| v7 ✓ | Timestamp Unix in ms + bit casuali | Sì | Chiavi primarie di database, log di eventi, tutto ciò che viene indicizzato |
Versioni definite da RFC 9562 (maggio 2024), che sostituisce RFC 4122.