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 universell eindeutigen Bezeichner (Universally Unique Identifier, kurz UUID) erzeugt: einen 128-Bit-Code, der ein Datenelement so kennzeichnet, dass vermutlich kein anderes Element irgendwo dieselbe Kennzeichnung trägt. Diese Seite erzeugt UUIDs der Version 1 (zeitbasiert) und der Version 4 (zufällig).
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 unterteilt, nach dem Muster 8-4-4-4-12, insgesamt also 36 Zeichen. Eine Beispiel-UUID sieht so aus:
1550e8400-e29b-41d4-a716-446655440000
2UUIDs sind in einem Standard der Internet Engineering Task Force festgelegt. Die erste Fassung dieses Standards, RFC 4122, wurde im Juli 2005 veröffentlicht. Im Mai 2024 wurde sie durch RFC 9562 abgelöst, der RFC 4122 für obsolet erklärt und neue Versionen hinzufügt. Software verwendet UUIDs, um Datenbankzeilen, Dateien und andere Datensätze zu kennzeichnen, ohne dass eine zentrale Stelle Nummern vergeben muss. Weil der Raum möglicher UUIDs so groß ist, können zwei Computer unabhängig voneinander im selben Moment UUIDs erzeugen und erzeugen dabei fast nie dieselbe.
Format und Aufbau einer UUID
Die 128 Bits einer UUID sind in benannte Felder unterteilt. Jedes Feld belegt eine feste Anzahl von Bits:
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 in time_hi_and_version kennzeichnen die Versionsnummer der UUID, und zwei Bits in clock_seq_hi_and_reserved kennzeichnen die Variante, die der Software angibt, wie die übrigen Felder zu lesen sind.
So erzeugen Sie eine UUID mit diesem Werkzeug
- Wählen Sie eine Version: Version 1 (zeitbasiert) oder Version 4 (zufällig).
- Wählen Sie „Generieren“. Das Werkzeug erzeugt sofort eine neue 128-Bit-UUID.
- Wählen Sie „Kopieren“, um das Ergebnis in die Zwischenablage zu kopieren.
- Fügen Sie die UUID in Code, eine Datenbank oder eine Konfigurationsdatei ein.
Version 4 eignet sich für die meisten Aufgaben, etwa als Datenbankschlüssel, weil sie keine Angaben darüber enthält, wann oder wo sie erzeugt wurde. Version 1 hält den Zeitpunkt der Erzeugung fest, was hilfreich sein kann, wenn man wissen möchte, wann ein Datensatz angelegt wurde.
UUID-Version 1 im Vergleich zu Version 4
Version 1 kodiert den aktuellen Zeitstempel sowie eine Taktfolge (Clock Sequence) und einen Knotenwert. Nach dem ursprünglichen Standard durfte der Knotenwert die tatsächliche Netzwerkadresse (MAC-Adresse) eines Computers sein. Der neuere Standard besagt, dass MAC-Adressen Datenschutzrisiken bergen und nicht verwendet werden sollten, und erlaubt stattdessen einen zufälligen Knotenwert. Dieses Werkzeug verwendet für den Knoten immer Zufallsbits, sodass seine UUIDs der Version 1 nie eine echte MAC-Adresse auslesen oder preisgeben. Wie es der Standard für einen zufälligen Knoten verlangt, setzt das Werkzeug das niederwertigste Bit des ersten Oktetts des Knotens (das Multicast-Bit) auf 1; damit wird der Knoten als zufällig und nicht als echte Netzwerkadresse gekennzeichnet. Die Uhr des Werkzeugs liest die Zeit in Millisekunden, deshalb sind die kleinsten Stellen des Zeitstempels immer null.
UUIDs der Version 1 lassen sich als Text nicht nach Erzeugungszeit sortieren. Der sich am schnellsten ändernde Teil des Zeitstempels, time_low, steht an erster Stelle, sodass eine spätere UUID vor einer früheren einsortiert werden kann. RFC 9562 fügt Version 6 hinzu, eine umgeordnete Form von Version 1 für eine bessere Sortierung in Datenbanken, und besagt, dass neue Systeme nach Möglichkeit Version 7 statt der Versionen 1 und 6 verwenden sollten.
Version 4 besteht aus Zufallsbits, von denen einige wenige fest vorgegeben sind, um Version und Variante zu kennzeichnen. Sie enthält weder einen Zeitstempel noch maschinenspezifische Daten und verrät daher nichts darüber, wann oder wo sie erzeugt wurde. Sie lässt sich nicht nach Erzeugungsreihenfolge sortieren.
Der Standard kennt weitere Versionen, die dieses Werkzeug jedoch nicht erzeugt. Version 2 ist für DCE Security reserviert. Die Versionen 3 und 5 werden gebildet, indem ein Namensraum und ein Name mit MD5 oder SHA-1 gehasht werden, sodass dieselbe Eingabe immer dieselbe UUID ergibt. Die Versionen 6, 7 und 8 wurden durch RFC 9562 hinzugefügt.
So wird eine UUID berechnet (Formel)
Version 4:
- Erzeugen Sie 128 zufällige Bits. Das Werkzeug bezieht diese Bits von der Web Crypto API (
crypto.getRandomValues), einer kryptografisch sicheren Quelle; nur wenn diese API fehlt, greift es aufMath.randomzurück. - Setzen Sie die vier Versionsbits, also die erste Hexadezimalziffer der dritten Gruppe, auf
0100(hexadezimal4). - Setzen Sie die obersten zwei Bits der vierten Gruppe auf
10(sodass die erste Hexadezimalziffer dieser Gruppe8,9,aoderbist).
Nur 122 der 128 Bits sind zufällig, da 6 Bits durch die Schritte 2 und 3 festgelegt sind. Das ergibt 2^122, also etwa 5,3 × 10^36, mögliche UUIDs der Version 4.
Version 1:
- Nehmen Sie die aktuelle Zeit als Anzahl von Intervallen zu je 100 Nanosekunden seit dem 15. Oktober 1582, dem Datum der Gregorianischen Kalenderreform. Damit werden
time_low,time_midund ein Teil vontime_hi_and_versiongefüllt. - Erzeugen Sie eine zufällige 14-Bit-Taktfolge, die Duplikate vermeiden soll, falls die Systemuhr zurückgestellt wird.
- Erzeugen Sie einen zufälligen 48-Bit-Knotenwert und setzen Sie dann das Multicast-Bit (das niederwertigste Bit seines ersten Bytes) auf 1. Taktfolge und Knoten stammen aus derselben Web-Crypto-Ziehung wie bei Version 4, mit demselben Rückgriff auf
Math.random. - Setzen Sie die Versionsbits auf
0001und die Variantenbits auf10.
Über alle UUID-Versionen hinweg umfasst der gesamte 128-Bit-Raum 2^128, also etwa 3,4 × 10^38, mögliche Werte.
Rechenbeispiel
Betrachten Sie die Beispiel-UUID von oben: 550e8400-e29b-41d4-a716-446655440000.
- Dritte Gruppe,
41d4: Die erste Ziffer ist4und kennzeichnet diese UUID als UUID der Version 4. - Vierte Gruppe,
a716: Die erste Ziffer,a(binär1010), beginnt mit10, den vorgeschriebenen Variantenbits. - Die übrigen Hexadezimalziffern bilden die Zufallsnutzdaten.
Ein Programm, das diese UUID liest, prüft die 4 und das Muster 10, um das Format zu bestätigen, und behandelt den Rest dann als undurchsichtigen Wert.
Häufige Verwendungen von UUIDs
- Primärschlüssel in Datenbanken, besonders wenn mehrere Server gleichzeitig Datensätze anlegen, ohne sich untereinander abzustimmen.
- Bezeichner für Dateien, Ereignisse und Ressourcen in verteilten Systemen wie Microservices.
- Geräte-IDs in großen Netzwerken, in denen jedes Gerät seine eigene ID offline erzeugen kann.
UUIDs sollten nicht als Passwörter, Sitzungsgeheimnisse oder API-Schlüssel verwendet werden. Der Standard besagt, dass Implementierungen UUIDs nicht als Sicherheitsberechtigungen (Security Capabilities) verwenden dürfen, also als ID, die allein dadurch Zugriff gewährt, dass sie bekannt ist.
Der wichtigste Nachteil ist die Größe: Eine UUID benötigt 16 Byte Speicherplatz, verglichen mit 4 oder 8 Byte bei einem einfachen Ganzzahlzähler. Zufällige UUIDs wie Version 4 haben außerdem eine schlechte Lokalität im Datenbankindex: Neue Werte landen an zufälligen Stellen im Index, was Einfügevorgänge verlangsamen kann.
Alternativen zu UUIDs
Automatisch hochzählende Ganzzahlen sind kleiner und einfacher, funktionieren aber schlecht, sobald mehr als ein Server IDs unabhängig vergeben muss. Mehrere zeitlich geordnete ID-Verfahren wurden entwickelt, um das Sortierproblem zu lösen, und RFC 9562 führt sie als Hintergrund auf, darunter Snowflake von Twitter und ULID. Eine ULID hat wie eine UUID 128 Bits und ist lexikografisch sortierbar, das heißt, sie wird als Text in der Reihenfolge der Erzeugung sortiert. Für neue Systeme bietet UUID-Version 7 denselben Vorteil innerhalb des UUID-Standards.
Geschichte des UUID-Standards
UUIDs wurden zuerst im Apollo Network Computing System verwendet, dann in der Distributed Computing Environment der Open Software Foundation und anschließend in Microsoft Windows. Die Internet Engineering Task Force veröffentlichte RFC 4122 im Juli 2005 und ersetzte ihn im Mai 2024 durch RFC 9562.
Häufig gestellte Fragen
Wofür wird ein UUID-Generator verwendet? Er erzeugt eindeutige Bezeichner für Datenbanken, verteilte Systeme und Geräte-IDs, sodass sich keine zwei Datensätze denselben Bezeichner teilen müssen.
Was ist der Unterschied zwischen UUID v1 und v4? Version 1 kodiert einen Zeitstempel. Version 4 ist bis auf ihre Versions- und Variantenbits zufällig und enthält keinen Zeitstempel. Die Ausgabe der Version 1 dieses Werkzeugs verwendet einen zufälligen Knotenwert statt einer echten MAC-Adresse und gibt daher keine Informationen preis, die ein Gerät identifizieren.
Gibt Version 1 meine MAC-Adresse preis? Mit diesem Werkzeug nicht. Nach dem ursprünglichen Standard durfte das Knotenfeld einer UUID der Version 1 eine echte MAC-Adresse enthalten, dieser Generator füllt das Feld jedoch immer mit Zufallsbits und setzt das Multicast-Bit, um es als zufällig zu kennzeichnen.
Sind UUIDs garantiert eindeutig? Kein Bezeichnungsschema kann absolute Eindeutigkeit garantieren, aber eine UUID der Version 4 hat etwa 5,3 × 10^36 mögliche Zufallswerte. Die Wahrscheinlichkeit eines Duplikats ist so gering, dass sie für fast jeden praktischen Zweck vernachlässigt werden kann, sofern die Zufallszahlen gut sind.
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 erzeugen kann, ohne bei einem zentralen Server nachzufragen. Der Preis sind 16 Byte Speicherplatz pro Schlüssel und, bei zufälligen Versionen, langsamere Einfügevorgänge in sehr großen Tabellen.
Ist eine UUID dasselbe wie eine GUID? Ja. RFC 9562 besagt, dass UUIDs auch als GUIDs (Globally Unique IDentifiers) bekannt sind, so der Name auf Microsoft-Plattformen.
Lassen sich UUIDs der Version 1 oder Version 4 nach Erzeugungszeit sortieren? Nicht als Text. Version 4 ist zufällig, und bei Version 1 steht der sich am schnellsten ändernde Teil des Zeitstempels an erster Stelle. Für IDs, die in der Reihenfolge der Erzeugung sortiert werden, verwenden Sie UUID-Version 7 oder eine ULID.
Referenzen
- Internet Engineering Task Force. RFC 9562: Universally Unique IDentifiers (UUIDs). RFC 9562 — ersetzt RFC 4122 (Mai 2024); 122 Zufallsbits in Version 4; Versionen 6 und 7 und die Empfehlung, Version 7 zu bevorzugen; MAC-Adressen sollten nicht verwendet werden; UUIDs dürfen keine Sicherheitsberechtigungen sein; schlechte Indexlokalität von Version 4; Geschichte von Apollo NCS, OSF DCE und Microsoft; GUID als weiterer Name.
- Internet Engineering Task Force. RFC 4122: A Universally Unique IDentifier (UUID) URN Namespace. RFC 4122 — veröffentlicht im Juli 2005; der Zeitstempel der Version 1 zählt Intervalle von 100 Nanosekunden seit dem 15. Oktober 1582.
- ULID project. Universally Unique Lexicographically Sortable Identifier. ULID-Spezifikation — 128-Bit-Kompatibilität mit UUID und lexikografische Sortierung.