Aufbau 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