Skip to main content

Struktur einer UUID

Grundstruktur einer UUID

Eine UUID besteht immer aus 128 Bits = 16 Bytes.

Typische Darstellung:

123e4567-e89b-12d3-a456-426614174000

Aufgeteilt:

8-4-4-4-12 Hex-Zeichen

Das entspricht:

  • 32 Bit – 16 Bit – 16 Bit – 16 Bit – 48 Bit

Bit-Level Aufbau (allgemein)

Eine UUID hat zwei wichtige feste Bestandteile:

1. πŸ”’ Version (4 Bits)

  • Gibt an, wie die UUID erzeugt wurde (v1–v7)
  • Sitzt im 3. Block (die ersten 4 Bits davon)

Beispiel:

xxxxxxxx-xxxx-1xxx-....
             ↑
           Version

2. 🧭 Variant (2–3 Bits)

  • Gibt das Format der UUID an (meist RFC 4122 / 9562)
  • Sitzt im 4. Block am Anfang

Typische Werte:

  • 10xx β†’ Standard UUID (das, was du fast immer siehst)

Beispiel:

xxxxxxxx-xxxx-xxxx-8xxx-....
                 ↑
              Variant

πŸ“¦ Beispiel analysiert

UUID:

123e4567-e89b-12d3-a456-426614174000

πŸ‘‰ Zerlegt:

  • 123e4567 β†’ Teil 1
  • e89b β†’ Teil 2
  • 12d3 β†’ Teil 3 β†’ Version = 1
  • a456 β†’ Teil 4 β†’ Variant = a (= 1010 β†’ RFC-konform)
  • 426614174000 β†’ Teil 5

🧩 Unterschied je nach Version

Jetzt wird’s interessant:
Der Inhalt der 128 Bits hΓ€ngt stark von der Version ab.


πŸ”Ή UUID v1 (Zeitbasiert)

Aufbau:

time_low (32)
time_mid (16)
time_high + version (16)
variant + clock_seq (16)
node (48)

EnthΓ€lt:

  • Zeitstempel
  • Clock Sequence (gegen Kollisionen)
  • MAC-Adresse

πŸ‘‰ Deshalb:

  • eindeutig
  • aber privacy-problematisch

πŸ”Ή UUID v4 (Random)

Aufbau:

random (122 bits)
+ version (4 bits)
+ variant (2-3 bits)

πŸ‘‰ Fast alles ist Zufall
Nur:

  • Version
  • Variant

sind fest codiert


πŸ”Ή UUID v7 (modern πŸ”₯)

Aufbau (vereinfacht):

unix_ts_ms (48 bits)
version (4 bits)
rand (12 bits)
variant (2-3 bits)
rand (62 bits)

πŸ‘‰ Mischung aus:

  • Zeit (Millisekunden seit 1970)
  • Zufall

Vorteil:

  • Sortierbar
  • Keine MAC-Adresse
  • Gute Verteilung

πŸ“Š Visuelle Darstellung (v7 Beispiel)

|------ Zeit (48) ------|ver|--- rand ---|var|-------- rand --------|

🧠 Wichtige Erkenntnisse

  • UUID ist kein reiner Zufallsstring
  • Einige Bits sind immer reserviert:
    • Version
    • Variant
  • Je nach Version:
    • Zeit enthalten βœ…
    • Hash enthalten βœ…
    • MAC enthalten βœ…
    • oder komplett random βœ…

⚠️ Kleine Stolperfallen

  • Hex-Darstellung β‰  echte interne Reihenfolge (Endianness kann verwirren)
  • v1/v6 kΓΆnnen Infos leaken (Zeit, GerΓ€t)
  • v4 ist nicht sortierbar β†’ schlecht fΓΌr DB-Indizes
  • v7 lΓΆst viele dieser Probleme