5.5. UUID Version 5 (UUID versione 5)
5.5. UUID Version 5
UUIDv5 è destinato a generare UUID da "nomi" che sono tratti e univoci all'interno di un certo "namespace", come da sezione 6.5.
I valori UUIDv5 sono creati calcolando un hash SHA-1 [FIPS180-4] su un dato valore di ID del namespace (sezione 6.6) concatenato con il valore del nome desiderato dopo che entrambi sono stati convertiti in una sequenza canonica di ottetti, come definito dagli standard o convenzioni del suo namespace, in ordine di byte di rete. I 128 bit più significativi e più a sinistra del valore SHA-1 vengono quindi utilizzati per popolare tutti i 128 bit del layout UUID, e i restanti 32 bit meno significativi e più a destra dell'output SHA-1 vengono scartati. La versione UUID e la variante sostituiscono quindi i rispettivi bit come definito dalle sezioni 4.2 e 4.1. Un esempio di questa sostituzione di bit può essere trovato nell'appendice A.4.
Le informazioni sulla selezione di un formato canonico del nome desiderato all'interno di un dato namespace possono essere trovate nella sezione 6.5 sotto il titolo "A note on names".
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| sha1_high |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| sha1_high | ver | sha1_mid |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|var| sha1_low |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| sha1_low |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figura 9: Layout dei campi e dei bit UUIDv5
sha1_high: I primi 48 bit del layout sono riempiti con i 48 bit più significativi e più a sinistra del valore SHA-1 calcolato. Occupa i bit da 0 a 47 (ottetti 0-5).
ver: Il campo versione di 4 bit come definito dalla sezione 4.2, impostato a 0b0101 (5). Occupa i bit da 48 a 51 dell'ottetto 6.
sha1_mid: 12 bit aggiuntivi del layout costituiti dai 12 bit meno significativi e più a destra dei 16 bit immediatamente successivi a sha1_high del valore SHA-1 calcolato. Occupa i bit da 52 a 63 (ottetti 6-7).
var: Il campo variante di 2 bit come definito dalla sezione 4.1, impostato a 0b10. Occupa i bit 64 e 65 dell'ottetto 8.
sha1_low: Gli ultimi 62 bit del layout immediatamente successivi al campo var da riempire con i bit meno significativi e più a destra degli ultimi 64 bit dell'output SHA-1 con i 32 bit più significativi e più a sinistra dell'output SHA-1 scartati. Occupa i bit da 66 a 127 (ottetti 8-15).