Generare valori UUID v5 deterministici
Un UUID versione 5 deriva da un UUID di namespace e da un nome tramite SHA-1. Chiunque calcoli l'hash dello stesso namespace e dello stesso nome ottiene esattamente lo stesso UUID, quindi gli ID si possono ricalcolare invece di salvarli.
Esempio svolto
- Namespace (UUID)
- DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8)
- Nome
- example.com
- Risultato
- cfbff0d1-9375-5685-968c-48ce8b15ae17
- Namespace (UUID)
- DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8)
- Nome
- Example.com
- Risultato
- a1feb884-07f5-5a14-8edb-cb659a7fbadc
Come funziona
- I 16 byte del namespace vengono uniti ai byte UTF-8 del nome ed elaborati con SHA-1. I primi 16 byte del digest diventano l'UUID dopo aver impostato i bit di versione (5) e di variante.
- La RFC 9562 predefinisce namespace per nomi DNS, URL, OID ISO e nomi distinti X.500. Qualsiasi UUID personale può fungere anche da namespace privato.
- I nomi vengono confrontati byte per byte: maiuscole, spazi e barre finali cambiano il risultato, quindi normalizza prima i nomi. Poiché l'output è prevedibile, non usare mai un UUID v5 come segreto.
Genera da 1 a 100 UUID alla volta
Namespace DNS: 6ba7b810-9dad-11d1-80b4-00c04fd430c8 (predefinito)
Il nome da hash (ad es. nome di dominio, e-mail, ecc.)
Informazioni sugli UUID
UUID v1: UUID basati sul tempo che includono un timestamp e l'indirizzo MAC del computer che genera l'UUID. Utile quando è necessario sapere quando è stato creato l'UUID.
UUID v4: UUID generati casualmente. Questa è la versione più comunemente utilizzata e fornisce una buona unicità con una perdita minima di informazioni.
UUID v5: UUID basati sul nome utilizzando l'hashing SHA-1. Dato lo stesso namespace e nome, otterrai sempre lo stesso UUID. Utile per la generazione deterministica di UUID.