Varianti e versioni:
Un UUID ha varianti e versioni .
Il 4 in questo caso ti dice che è la versione 4. Altre versioni vanno da 1 a 5.
Quelle versioni hanno varianti 8, 9, A e B, quindi la z nel tuo UUID ti dice quale variante è.
La variante viene utilizzata per indicare quale layout ha l'UUID. Le varianti sono importanti anche quando si tratta di compatibilità con le versioni precedenti.
Lunghezza delle stringhe:
Per quanto riguarda il motivo per cui le stringhe hanno lunghezze diverse, un UUID ha alcune parti, che puoi usare per generare un UUID in base a vari parametri:
UUID = time-low "-"
time-mid "-"
time-high-and-version "-"
clock-seq-and-reserved | clock-seq-low "-"
node
time-low
ha 16 bit, time-mid
ha 8 bit, ... Le lunghezze sono state storicamente costruite in modo da adattarsi allo schema seguente:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| time_low |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| time_mid | time_hi_and_version |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|clk_seq_hi_res | clk_seq_low | node (0-1) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| node (2-5) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Quindi questo dovrebbe darti un'idea, perché le lunghezze delle stringhe sono diverse.
UUID e sicurezza:
Normalmente gli UUID sono not secure: link ... e vedi il commento di Michael Kjörling per ulteriori esempi e spiegazioni.
Gli UUID non sono stati creati per essere crittograficamente sicuri, quindi dovresti usare qualcos'altro creato appositamente per questo scopo.
L'RFC per gli UUID ha anche una sezione sulla sicurezza, che avvisa gli utenti di utilizzare gli UUID in modo errato per questo:
-
Security Considerations
Do not assume that UUIDs are hard to guess; they should not be used
as security capabilities (identifiers whose mere possession grants
access), for example. A predictable random number source will
exacerbate the situation.
Vedi la RFC per i dettagli tecnici: link