Deterministische UUID-v5-Werte erzeugen
Eine UUID der Version 5 wird mit SHA-1 aus einer Namensraum-UUID und einem Namen abgeleitet. Wer denselben Namensraum und denselben Namen hasht, erhält genau dieselbe UUID – IDs lassen sich also neu berechnen statt speichern.
Durchgerechnetes Beispiel
- Namespace (UUID)
- DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8)
- Name
- example.com
- Ergebnis
- cfbff0d1-9375-5685-968c-48ce8b15ae17
- Namespace (UUID)
- DNS (6ba7b810-9dad-11d1-80b4-00c04fd430c8)
- Name
- Example.com
- Ergebnis
- a1feb884-07f5-5a14-8edb-cb659a7fbadc
So funktioniert es
- Die 16 Bytes des Namensraums werden mit den UTF-8-Bytes des Namens verbunden und mit SHA-1 gehasht. Die ersten 16 Bytes des Hashwerts bilden die UUID, nachdem Versions- (5) und Variantenbits gesetzt wurden.
- RFC 9562 definiert Namensräume für DNS-Namen, URLs, ISO-OIDs und X.500-Distinguished-Names. Jede eigene UUID kann außerdem als privater Namensraum dienen.
- Namen werden Byte für Byte verglichen: Groß-/Kleinschreibung, Leerzeichen und abschließende Schrägstriche ändern das Ergebnis, daher Namen vorher normalisieren. Da das Ergebnis vorhersagbar ist, nie eine v5-UUID als Geheimnis verwenden.
Generieren Sie 1-100 UUIDs auf einmal
DNS-Namespace: 6ba7b810-9dad-11d1-80b4-00c04fd430c8 (Standard)
Der zu hashende Name (z.B. Domainname, E-Mail usw.)
Über UUIDs
UUID v1: Zeitbasierte UUIDs, die einen Zeitstempel und die MAC-Adresse des Computers enthalten, der die UUID generiert. Nützlich, wenn Sie wissen müssen, wann die UUID erstellt wurde.
UUID v4: Zufällig generierte UUIDs. Dies ist die am häufigsten verwendete Version und bietet gute Eindeutigkeit bei minimaler Informationsleckage.
UUID v5: Namensbasierte UUIDs mit SHA-1-Hashing. Bei gleichem Namespace und Namen erhalten Sie immer die gleiche UUID. Nützlich für deterministische UUID-Generierung.