5.5. UUID Version 5 (UUID Version 5)
5.5. UUID Version 5
UUIDv5 ist für die Generierung von UUIDs aus "Namen" gedacht, die aus einem bestimmten "Namensraum" stammen und darin eindeutig sind, gemäß Abschnitt 6.5.
UUIDv5-Werte werden erstellt, indem ein SHA-1-Hash [FIPS180-4] über einen gegebenen Namensraum-ID-Wert (Abschnitt 6.6) berechnet wird, der mit dem gewünschten Namenswert verkettet ist, nachdem beide in eine kanonische Sequenz von Oktetten konvertiert wurden, wie durch die Standards oder Konventionen seines Namensraums definiert, in Netzwerk-Byte-Reihenfolge. Die signifikantesten, linkesten 128 Bits des SHA-1-Werts werden dann verwendet, um alle 128 Bits des UUID-Layouts zu füllen, und die verbleibenden 32 am wenigsten signifikanten, rechtesten Bits der SHA-1-Ausgabe werden verworfen. Die UUID-Version und -Variante ersetzen dann die jeweiligen Bits, wie in den Abschnitten 4.2 und 4.1 definiert. Ein Beispiel für diese Bitsubstitution findet sich in Anhang A.4.
Informationen zur Auswahl eines kanonischen Formats für einen gewünschten Namen innerhalb eines gegebenen Namensraums finden sich in Abschnitt 6.5 unter der Überschrift "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 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Abbildung 9: UUIDv5 Feld- und Bit-Layout
sha1_high: Die ersten 48 Bits des Layouts werden mit den signifikantesten, linkesten 48 Bits des berechneten SHA-1-Werts gefüllt. Belegt Bits 0 bis 47 (Oktette 0-5).
ver: Das 4-Bit-Versionsfeld, wie in Abschnitt 4.2 definiert, auf 0b0101 (5) gesetzt. Belegt Bits 48 bis 51 von Oktett 6.
sha1_mid: 12 weitere Bits des Layouts, bestehend aus den am wenigsten signifikanten, rechtesten 12 Bits von 16 Bits unmittelbar nach sha1_high aus dem berechneten SHA-1-Wert. Belegt Bits 52 bis 63 (Oktette 6-7).
var: Das 2-Bit-Variantenfeld, wie in Abschnitt 4.1 definiert, auf 0b10 gesetzt. Belegt Bits 64 und 65 von Oktett 8.
sha1_low: Die letzten 62 Bits des Layouts unmittelbar nach dem var-Feld, die mit den am wenigsten signifikanten, rechtesten Bits der letzten 64 Bits der SHA-1-Ausgabe gefüllt werden, wobei die signifikantesten, linkesten 32 Bits der SHA-1-Ausgabe verworfen werden. Belegt Bits 66 bis 127 (Oktette 8-15).