Kostenloser UUID-Generator - Erstellen Sie V1 & V4 UUIDs sofort
Generieren Sie sofort eindeutige Identifikatoren mit unserem kostenlosen UUID-Generator. Erstellen Sie Version 1 (zeitbasierte) und Version 4 (zufällige) UUIDs für Datenbanken, APIs und verteilte Systeme.
UUID-Generator
Dokumentation
UUID-Generator
Ein UUID-Generator ist ein Werkzeug, das einen Universally Unique Identifier (UUID) erstellt: einen 128-Bit-Code zur Kennzeichnung eines Datenelements, sodass kein anderes Element irgendwo mit hoher Wahrscheinlichkeit dieselbe Kennzeichnung hat. Diese Seite erzeugt UUIDs der Version 1 (zeitbasiert) und der Version 4 (zufallsbasiert).
Was ist eine UUID?
Eine UUID ist eine 128-Bit-Zahl, die als 32 Hexadezimalziffern geschrieben wird (die Zeichen 0–9 und a–f). Sie ist in fünf durch Bindestriche getrennte Gruppen nach dem Muster 8-4-4-4-12 aufgeteilt und hat insgesamt 36 Zeichen. Eine UUID sieht beispielsweise so aus:
1550e8400-e29b-41d4-a716-446655440000
2UUIDs sind in RFC 9562 definiert, das im Mai 2024 von der Internet Engineering Task Force veröffentlicht wurde und das ältere RFC 4122 aus dem Jahr 2005 ersetzt hat. Beide Dokumente beschreiben dasselbe 128-Bit-Format. Software verwendet UUIDs zur Identifizierung von Datenbankzeilen, Dateien, Benutzersitzungen und anderen Datensätzen, ohne dass eine zentrale Stelle Nummern vergeben muss. Da der Raum möglicher UUIDs sehr groß ist, können zwei Computer unabhängig voneinander und zum selben Zeitpunkt UUIDs erzeugen, ohne dabei fast jemals dieselbe UUID zu erstellen.
Aufbau und Struktur einer UUID
Die 128 Bits einer UUID sind in benannte Felder aufgeteilt. Jedes Feld nimmt eine festgelegte Anzahl von Bits ein:
time_low– 32 Bitstime_mid– 16 Bitstime_hi_and_version– 16 Bitsclock_seq_hi_and_reserved– 8 Bitsclock_seq_low– 8 Bitsnode– 48 Bits
Vier Bits innerhalb von time_hi_and_version enthalten die Versionsnummer der UUID. Zwei Bits innerhalb von clock_seq_hi_and_reserved enthalten die Variante, die der Software mitteilt, wie die übrigen Felder zu lesen sind. Es sind acht Versionen definiert.
Die oben genannten Feldnamen stammen aus Version 1, bei der sie tatsächlich einen Zeit- und einen Knotenwert enthalten. Andere Versionen behalten dasselbe Layout 8-4-4-4-12 und dieselben Feldgrenzen bei, füllen jedoch den Großteil der Bits mit Zufallsdaten. In einer UUID der Version 4 ist die als time_low bezeichnete Gruppe zufällig und enthält keine Zeitangabe.
UUID mit diesem Tool erzeugen
- Version auswählen: Version 1 (zeitbasiert) oder Version 4 (zufallsbasiert).
- Die UUID im Ergebnisfeld ablesen. Eine neue UUID erscheint, sobald die Seite geladen wird oder sich die Version ändert.
- Für eine weitere UUID „Generieren“ auswählen.
- „Kopieren“ auswählen, um das Ergebnis in die Zwischenablage zu kopieren, und es anschließend in Code, eine Datenbank oder eine Konfigurationsdatei einfügen.
Das Feld unterhalb des Ergebnisses teilt die UUID in ihre fünf Felder auf und benennt jedes Feld. Dadurch sind die Versionsziffer und die Variantenziffer leicht zu erkennen.
Version 4 eignet sich für die meisten Anwendungen, darunter Datenbankschlüssel und Sitzungstoken, da sie keine Informationen darüber enthält, wann oder wo sie erstellt wurde. Version 1 eignet sich für Datensätze, deren Erstellungszeit aus der Kennung selbst wiederhergestellt werden muss, etwa für Protokolleinträge.
UUID-Version 1 und Version 4 im Vergleich
Version 1 codiert den aktuellen Zeitstempel sowie eine zufällig ausgewählte Taktfolge und einen Knotenwert. Der Standard erlaubt, als Knotenwert die echte Netzwerkadresse (MAC-Adresse) eines Computers zu verwenden. Er erlaubt jedoch auch einen zufällig erzeugten Knotenwert als Alternative zum Schutz der Privatsphäre. Dieses Tool verwendet immer die Zufallsoption: Seine UUIDs der Version 1 lesen keine echte MAC-Adresse aus und geben sie nicht preis. Der Standard verlangt außerdem, dass das niedrigste Bit des ersten Bytes des Knotenfelds bei einem zufälligen Knotenwert auf 1 gesetzt wird; auch dieses Tool setzt es. Echte Netzwerkkarten haben dieses Bit nie gesetzt. Daher kann ein zufälliger Knotenwert nicht mit einem echten verwechselt werden. Deshalb ist die zweite Hexadezimalziffer der fünften Gruppe bei einer UUID der Version 1 von dieser Seite immer ungerade: 1, 3, 5, 7, 9, b, d oder f.
Der Zeitstempel in einer UUID der Version 1 kann ausgelesen werden, sodass Datensätze nach ihrer Erstellungszeit geordnet werden können. Das Sortieren des UUID-Textes selbst führt nicht dazu, weil die erste Gruppe die niedrigsten 32 Bits des Zeitstempels enthält, die sich ungefähr alle 7 Minuten wiederholen. Version 6, die mit RFC 9562 hinzugefügt wurde, speichert denselben Zeitstempel mit den höchstwertigen Bits zuerst, sodass eine einfache Textsortierung funktioniert.
Version 4 wird aus zufälligen Bits gebildet, wobei einige Bits zur Kennzeichnung von Version und Variante festgelegt sind. Sie enthält weder einen Zeitstempel noch maschinenspezifische Daten und gibt daher nichts darüber preis, wann oder wo sie erstellt wurde. Nach der Erstellungszeit kann sie nicht sortiert werden.
Sechs weitere Versionen existieren im Standard, werden von diesem Tool jedoch nicht erzeugt: Version 2 (DCE Security, selten verwendet); Version 3 und Version 5, die durch Hashing eines Namensraums und eines Namens mit MD5 oder SHA-1 erstellt werden, sodass dieselbe Eingabe immer dieselbe UUID ergibt; sowie die Versionen 6, 7 und 8, die 2024 durch RFC 9562 für sortierbare und benutzerdefinierte Kennungen hinzugefügt wurden.
UUID berechnen (Formel)
Version 4:
- 128 zufällige Bits erzeugen.
- Die vier Versionsbits, also die erste Hexadezimalziffer der dritten Gruppe, auf
0100(Hexadezimal4) setzen. - Die beiden höchstwertigen Bits der vierten Gruppe auf
10setzen, sodass die erste Hexadezimalziffer dieser Gruppe8,9,aoderbist.
Nur 122 der 128 Bits sind tatsächlich zufällig, da durch die Schritte 2 und 3 sechs Bits festgelegt werden. Daraus ergeben sich 2^122 oder ungefähr 5.3 × 10^36 mögliche UUIDs der Version 4.
Version 1:
- Die aktuelle Zeit als Anzahl von 100-Nanosekunden-Intervallen seit dem 15. Oktober 1582 verwenden, dem Datum der Reform des Gregorianischen Kalenders. In der Praxis entspricht dies der gewöhnlichen Unix-Zeit in Millisekunden plus 12.219.292.800.000, multipliziert mit 10.000.
- Diese 60-Bit-Zahl auf drei Felder aufteilen: Die niedrigsten 32 Bits kommen in
time_low, die nächsten 16 intime_midund die obersten 12 intime_hi_and_version. - Eine 14-Bit-Taktfolge erzeugen, die Kollisionen verhindert, wenn die Systemuhr zurückgestellt wird.
- Einen 48-Bit-Knotenwert erzeugen, wobei das niedrigste Bit seines ersten Bytes auf 1 gesetzt wird.
- Die Versionsbits auf
0001und die Variantenbits auf10setzen.
Über alle UUID-Versionen hinweg kann der vollständige 128-Bit-Raum 2^128 oder ungefähr 3.4 × 10^38 mögliche Werte aufnehmen. Diese Anzahl ist so groß, dass zufällige Kollisionen in der Praxis keine Rolle spielen.
Beispielrechnung
Eine UUID der Version 4 lesen. Verwendet wird das bereits genannte Beispiel: 550e8400-e29b-41d4-a716-446655440000.
- Dritte Gruppe,
41d4: Die erste Ziffer ist4und kennzeichnet die UUID als Version 4. - Vierte Gruppe,
a716: Die erste Ziffer,a(binär1010), beginnt mit10, den erforderlichen Variantenbits. - Die übrigen Hexadezimalziffern bilden die zufälligen Nutzdaten.
Ein Programm, das diese UUID liest, prüft die Muster 4 und 10, um das Format zu bestätigen, und behandelt den Rest als undurchsichtigen Zufallswert.
Eine UUID der Version 1 erstellen. Angenommen, die Uhr zeigt 1.700.000.000.000 Millisekunden Unix-Zeit an, also den 14. November 2023, 22:13:20 UTC.
- Den Offset addieren: 1.700.000.000.000 + 12.219.292.800.000 = 13.919.292.800.000 ms.
- Mit 10.000 multiplizieren, um 100-Nanosekunden-Intervalle zu erhalten: 139.192.928.000.000.000. Hexadezimal entspricht dies
01EE833B04AFC000. - Die Zahl aufteilen:
time_low=04AFC000(die niedrigsten 8 Hexadezimalziffern),time_mid=833B(die nächsten 4) und die obersten 12 Bits =1EE. - Die Versionsziffer
1vor1EEsetzen. Damit ergibt sichtime_hi_and_version=11EE.
Die UUID lautet anschließend 04afc000-833b-11ee-, gefolgt von der Taktfolge und dem Knotenwert. Software kann diese vier Schritte umkehren und den 14. November 2023 aus der Kennung wiederherstellen.
Häufige Verwendungen von UUIDs
- Primärschlüssel in Datenbanken, besonders wenn mehrere Server gleichzeitig Datensätze erstellen, ohne sich untereinander abzustimmen.
- Sitzungstoken und API-Schlüssel, üblicherweise Version 4 wegen des damit verbundenen Datenschutzes.
- Kennungen für Dateien, Ereignisse und Ressourcen in verteilten Systemen wie Microservices.
- Geräte-IDs in großen IoT-Netzwerken, in denen jedes Gerät seine eigene ID offline erzeugen kann.
Der wichtigste Nachteil ist die Größe: Eine UUID benötigt 16 Byte Speicherplatz, verglichen mit 4 oder 8 Byte für einen einfachen Ganzzahlzähler. Außerdem indizieren manche Datenbanken UUIDs langsamer als fortlaufende Ganzzahlen.
Alternativen zu UUIDs
Automatisch erhöhte Ganzzahlen sind kleiner und einfacher, funktionieren jedoch schlecht, sobald mehr als ein Server IDs unabhängig voneinander vergeben muss. Snowflake-IDs, die bei Twitter entwickelt wurden, kombinieren einen Zeitstempel mit einer Worker-ID, um kompakte, sortierbare Kennungen in einem verteilten System zu erzeugen. ULIDs (Universally Unique Lexicographically Sortable Identifiers) sind ein neueres Format, das sowohl zufällig als auch nach der Erstellungszeit sortierbar sein soll. Eine standardmäßige UUID der Version 4 kann dies nicht.
Geschichte des UUID-Standards
Das Konzept der UUID entstand in den 1980er-Jahren bei Apollo Computer als Teil des Network Computing System. Die Open Software Foundation übernahm das Format später für ihre Distributed Computing Environment. Die Internet Engineering Task Force veröffentlichte 2005 RFC 4122 und ersetzte es im Mai 2024 durch RFC 9562. RFC 9562 sorgt dafür, dass alle früheren Versionen unverändert weiter funktionieren, und fügt die Versionen 6, 7 und 8 hinzu.
Häufig gestellte Fragen
Wofür wird ein UUID-Generator verwendet?
Er erstellt eindeutige Kennungen für Datenbanken, verteilte Systeme, Sitzungstoken, API-Schlüssel und Geräte-IDs, sodass keine zwei Datensätze dieselbe Kennung benötigen.
Was ist der Unterschied zwischen UUID v1 und v4?
Version 1 codiert einen Zeitstempel, den Software auslesen kann, um die Erstellungszeit zu ermitteln. Version 4 ist vollständig zufällig und enthält keinen Zeitstempel. Die Ausgabe von Version 1 dieses Tools verwendet einen zufällig erzeugten Knotenwert statt einer echten MAC-Adresse und gibt daher ebenfalls keine maschinenbezogenen Identifikationsdaten preis.
Gibt Version 1 meine MAC-Adresse preis?
Nicht bei diesem Tool. Der Standard erlaubt, dass das Knotenfeld einer UUID der Version 1 eine echte MAC-Adresse enthält. Dieser Generator füllt das Feld jedoch immer mit zufälligen Bits und setzt das Bit, das den Wert als keine echte Netzwerkadresse kennzeichnet.
Sind UUIDs garantiert eindeutig?
Nein. Kein Kennzeichnungsschema kann absolute Eindeutigkeit garantieren. Der 128-Bit-Raum enthält jedoch ungefähr 3.4 × 10^38 mögliche Werte, und eine UUID der Version 4 hat ungefähr 5.3 × 10^36 mögliche Zufallswerte. Die Wahrscheinlichkeit einer doppelten UUID ist für fast jede praktische Anwendung so gering, dass sie vernachlässigt werden kann.
Kann ich eine UUID als Primärschlüssel einer Datenbank verwenden?
Ja. UUIDs eignen sich gut als Primärschlüssel in verteilten Systemen, weil jeder Knoten eine UUID erzeugen kann, ohne einen zentralen Server zu kontaktieren. Der Nachteil sind 16 Byte Speicherplatz pro Schlüssel, also mehr als bei einer typischen Ganzzahl, sowie möglicherweise eine langsamere Indexleistung bei sehr großen Tabellen.
Ist eine UUID dasselbe wie eine GUID?
Ja. GUID (Globally Unique Identifier) ist die Bezeichnung von Microsoft für dasselbe Konzept, das in RFC 4122 als UUID definiert ist.
Können UUIDs der Version 4 nach ihrer Erstellungszeit sortiert werden?
Nein. UUIDs der Version 4 sind zufällig und enthalten daher keine Information darüber, wann sie erstellt wurden. Eine UUID der Version 1 enthält diese Information, muss jedoch zuerst decodiert werden; das Sortieren des Textes ergibt keine Erstellungsreihenfolge. Version 6, Version 7 und ULIDs sind so ausgelegt, dass sie direkt als Text sortiert werden können.
Quellen
- Davis, K., Peabody, B. & Leach, P. (2024). Universally Unique IDentifiers (UUIDs). RFC 9562. https://www.rfc-editor.org/rfc/rfc9562
- Leach, P., Mealling, M. & Salz, R. (2005). A Universally Unique IDentifier (UUID) URN Namespace. RFC 4122. https://www.rfc-editor.org/rfc/rfc4122
- Universally unique identifier. In Wikipedia. https://en.wikipedia.org/wiki/Universally_unique_identifier
- Snowflake ID. In Wikipedia. https://en.wikipedia.org/wiki/Snowflake_ID
- ULID Spec. GitHub. https://github.com/ulid/spec