KeroTools

Zufällige UUID-v4-Bezeichner Generieren

Erzeugen Sie so viele zufällige v4-UUIDs, wie Sie für Datenbanken und Code brauchen, sofort.

Die Werte verlassen das Gerät nie

Nirgendwo wird protokolliert

Zufall auf Systemebene

Läuft in jedem modernen Browser

So funktioniert es

  1. 1

    Version wählen

    v4, es sei denn, die Kennung geht in einen Datenbankindex — dann kommt v7 in Betracht.

  2. 2

    Anzahl wählen

    Eine für einen schnellen Test oder ein Bündel für Startdaten und Testvorlagen.

  3. 3

    Ergebnis kopieren

    Nehmen Sie es in ein Schema, eine Anfrage, eine Konfigurationsdatei oder einen Test.

Warum dieses Tool

Version 4 und Version 7

Zufällig für den allgemeinen Gebrauch oder zeitstempelsortiert, wenn der Wert zum Primärschlüssel wird.

Kryptografischer Zufall

Erzeugt aus der sicheren Zufallsquelle des Browsers, nicht aus einer vorhersagbaren Pseudozufallsfunktion.

Erzeugung in Mengen

Eine Kennung oder tausend, in einem Schritt erzeugt und bereit für eine Startdatendatei.

Mit oder ohne Bindestriche

Die kanonische Form mit 36 Zeichen oder die nackte mit 32, je nachdem, was das Ziel erwartet.

Nichts wird übertragen

Die Werte entstehen in Ihrem Browser, sodass kein Dritter erfährt, welche Kennungen Sie verwendet haben.

Kostenlos, ohne Konto

Keine Anmeldung, kein Wasserzeichen, keine Obergrenze für die Zahl der Werte.

Die Version zählt mehr, als die meisten annehmen

Man sagt UUID und meint Version 4, also 122 Zufallsbits und sonst nichts. Das ist die richtige Voreinstellung, aber nicht die einzige Version, und die Unterschiede haben Folgen. Version 1 baut die Kennung aus einem Zeitstempel und der Netzwerk-Hardwareadresse der Maschine, sodass eine v1-UUID stillschweigend preisgibt, wann sie entstand — und historisch, welche Maschine sie erzeugte. Innerhalb eines Systems ist das in Ordnung, in allem, was Kundschaft sieht, unangenehm. Version 7, kürzlich standardisiert, behält den Zufall, setzt aber einen Millisekunden-Zeitstempel in die führenden Bits, sodass die Werte chronologisch sortieren. Wer je eine UUID erzeugt hat, ohne über die Art nachzudenken, hat mit hoher Wahrscheinlichkeit v4 erzeugt — und für die meisten Zwecke ist das die richtige Antwort. Die Ausnahme steht unten.

Zufällige Kennungen fallen einem Datenbankindex schwer

Das ist die folgenreichste praktische Tatsache über UUIDs und sie überrascht jene, die von Ganzzahlen kommen. Ein Index ist eine sortierte Struktur, und sortierte Strukturen mögen Werte, die der Reihe nach eintreffen. Eine Folge von Ganzzahlen hängt sich hinten an, berührt immer wieder dieselbe Seite und hält sie im Speicher. Ein Strom von v4-UUIDs ist konstruktionsbedingt zufällig, jede Einfügung landet also woanders und zwingt den Index, auf verstreute Seiten zu schreiben, sie zu teilen und weit mehr Struktur im Cache zu halten, um mitzukommen. Auf einer großen Tabelle ist der Unterschied messbar, und das Symptom ist die bekannte Geschichte eines Systems, das nach der Umstellung auf UUID-Schlüssel langsam wurde. Version 7 gibt es genau dafür: Der führende Zeitstempel lässt neue Werte nahe beieinander sortieren, sodass Einfügungen wieder lokal bleiben und die Kennungen unerratbar sind.

Eine UUID ist kein Geheimnis, außer Sie machen sie absichtlich dazu

Hier vermischen sich zwei Aussagen, und beide zählen. Erstens: Eine v4-UUID ist wirklich unerratbar — 122 Zufallsbits liegen weit jenseits roher Gewalt —, aber nur, wenn der Zufall kryptografisch ist. Viel Code erzeugt UUIDs aus einer allgemeinen Zufallsfunktion; die ist schnell und vorhersagbar, und Kennungen aus einer vorhersagbaren Quelle kann jeder aufzählen, der den Startwert herausfindet. Prüfen Sie, was Ihr Generator nutzt. Zweitens: Selbst eine perfekte v4 ist eine Kennung und keine Berechtigung. Eine unerratbare UUID als Freigabelink zu nutzen funktioniert und bedeutet, dass die URL das Passwort ist: Sie liegt im Verlauf, in Referrer-Headern, in einem Chatprotokoll und in jeder E-Mail, über die sie weitergereicht wurde. Für einen Dokumentlink ist das vertretbar, für alles, was widerrufbar sein muss, nicht.

Was die Kollisionsgarantie wirklich besagt

Dass UUIDs ohne Absprache funktionieren, beruht auf einem Wahrscheinlichkeitsargument, und die Zahlen zu kennen lohnt sich, damit man sich nicht mehr sorgt. Bei 122 Zufallsbits müsste man rund 2,7 Trillionen Version-4-UUIDs erzeugen, bis die Wahrscheinlichkeit bei fünfzig Prozent läge, dass zwei davon übereinstimmen. Bei einer Million pro Sekunde sind das Zehntausende Jahre — deshalb können Systeme an entgegengesetzten Enden der Welt Kennungen prägen, ohne zentrales Register und ohne je abzustimmen. Wovon die Garantie vollständig abhängt, ist die Qualität des Zufalls. Ein schwacher oder schlecht initialisierter Generator lässt diese Zahl ohne Vorwarnung zusammenbrechen, und doppelte UUIDs in der Produktion gehen fast immer auf eine fehlerhafte Quelle zurück, nicht auf Pech — in mehreren bekannten Fällen initialisierten Geräte ihre Zufallsquelle beim Start identisch.

Das Speichern kostet mehr, als man denkt

Eine UUID hat 128 Bit — 16 Byte —, doch die übliche Darstellung umfasst 36 Textzeichen, weil die kanonische Form jedes Byte als zwei Hexadezimalziffern schreibt und vier Bindestriche ergänzt. Speichert man das als Zeichenkette, verbraucht man 36 statt 16 Byte je Zeile, plus was die Datenbank für eine Spalte variabler Länge hinzufügt, und jeder Index auf dieser Spalte trägt dieselbe Aufblähung. Bei einigen tausend Zeilen merkt das niemand. Bei hundert Millionen, in einem Index, der im Speicher bleiben muss, ist es der Unterschied zwischen Passen und Nichtpassen. Die meisten Datenbanken haben genau dafür einen nativen 16-Byte-Typ, und ihn zu verwenden ist meist richtig. Die Formatfragen sind dagegen Kleinigkeiten: Bindestriche sind Konvention, nicht Pflicht, der Vergleich ignoriert die Schreibweise, und Kleinschreibung ist die kanonische Ausgabe.

Warum lokale Erzeugung selbst bei Zufallswerten zählt

Man darf fragen, was Datenschutz mit einer Zufallszahl zu tun hat, und die Antwort lautet: Die Zahl hört auf, anonym zu sein, sobald sie an etwas gebunden wird. Ein gehosteter Generator sieht jede Kennung, die er ausgibt, und kann sie zusammen mit der anfragenden Adresse und der Uhrzeit protokollieren. Werden diese UUIDs später zu Auftragsnummern, Freigabelinks, API-Schlüsseln oder Datenbankkennungen in Ihrem System, besitzt jemand anderes eine Liste gültiger Werte und eine gute Vorstellung davon, wozu sie gehören. Das ist ein kleines und völlig unnötiges Risiko, denn lokale Erzeugung beseitigt es ganz: Ihr Browser bringt eine kryptografische Zufallsquelle mit, die Werte verlassen die Seite nicht, und dass keine Anfrage erfolgte, sehen Sie im Netzwerk-Tab der Entwicklerwerkzeuge.

Häufige Fehler, die Sie vermeiden sollten

  • v4-UUIDs als Primärschlüssel einer großen Tabelle verwenden. Zufallswerte streuen Indexschreibvorgänge und fragmentieren die Struktur — nehmen Sie v7, dessen führender Zeitstempel Einfügungen lokal hält und dennoch unerratbar bleibt.
  • UUIDs aus einer allgemeinen Zufallsfunktion erzeugen. Nur eine kryptografische Quelle macht sie unerratbar; ein vorhersagbarer Startwert lässt Angreifer die Kennungen aufzählen.
  • Eine unerratbare UUID als Berechtigung behandeln. Ein daraus gebauter Freigabelink bedeutet, dass die URL das Passwort ist — und URLs landen im Verlauf, in Referrer-Headern und in weitergeleiteten E-Mails.
  • Eine UUID im großen Maßstab als 36-Zeichen-Text speichern. Der Wert hat 16 Byte; die Textform verdoppelt das in jeder Zeile und jedem Index mehr als — die meisten Datenbanken haben einen nativen Typ.
  • v1 in etwas verwenden, das Kundschaft sieht. Es kodiert die Entstehungszeit und historisch die Netzwerk-Hardwareadresse der Maschine — mehr, als eine Kennung preisgeben muss.

Im Vergleich

KriteriumDieses WerkzeugOnline-GeneratorenEin Bibliotheksaufruf
Werte übertragen oder protokolliertNieMöglichNein
v7 verfügbarJaSeltenJe nach Bibliothek
Kryptografischer ZufallJaMeist ungenanntMeistens ja
MassenerzeugungJaManchmalJa
Läuft ohne geöffnetes ProjektJaJaNein
PreisKostenlosKostenlos / BezahltarifeKostenlos

Funktionen

UUID v4

Die Version mit 122 Zufallsbits, die die meisten Systeme meinen, wenn sie UUID sagen.

UUID v7

Mit vorangestelltem Zeitstempel und daher sortierbar — genau das, was ein Datenbankindex will.

Groß- oder Kleinschreibung

Kanonisch ist Kleinschreibung; manche Systeme bestehen auf Großbuchstaben, beides ist hier.

Massenerzeugung

Hunderte auf einmal, eine je Zeile, bereit für ein Startdatenskript oder eine Tabellenspalte.

Nutzt den CSPRNG der Plattform

Die Werte stammen aus dem kryptografischen Generator des Browsers, nicht aus einem allgemeinen.

Sofort, ohne Anfrage

Nichts wird geladen, die Erzeugung ist unmittelbar und funktioniert im bereits geladenen Tab.

Nichts zu installieren

Keine Bibliothek, keine Laufzeitumgebung, keine Abhängigkeiten — es läuft auf der Webseite.

Bereit für Arabisch und RTL

Vollständige Oberfläche in acht Sprachen, darunter Arabisch von rechts nach links.

Standardmäßig sicher

Über HTTPS ausgeliefert, ohne Verfolgung und ohne Anfragen an Dritte.

Wer es nutzt

Entwicklerinnen und Entwickler

Eine gültige Kennung für eine Testvorlage oder eine von Hand eingefügte Zeile bekommen, ohne eine Konsole zu öffnen.

Datenbank-Engineering

v7-Werte erzeugen, wenn eine Tabelle unerratbare Schlüssel braucht, die trotzdem gut indexieren.

QA-Fachleute

Ein Bündel eindeutiger Kennungen für Testdaten in einem Schritt erzeugen.

API-Integratoren

Einen Idempotenzschlüssel oder eine Korrelationskennung für eine Anfrage anlegen.

Häufig Gestellte Fragen

Nein. Alles läuft lokal im Browser — Ihr Text wird nie hochgeladen, gespeichert oder geteilt.

Ja — komplett kostenlos, ohne Konto und ohne Limits.