Skip to main content

Secure Token Generator

Generate cryptographically secure random tokens in base64url, hex, alphanumeric or UUID v4 format.

Geprüft von · Zuletzt geprüft

32
Characters
192
Entropy bits

So wird der sichere Token-Generator verwendet

  1. Format auswählen: base64url für URL- und Header-Werte, die Percent-Encoding überstehen müssen, Hex wenn ein System mit parseInt(s, 16) oder Buffer.from(s, "hex") parst, alphanumerisch für Formulare, die Satzzeichen ablehnen, und UUID v4 für Datensatz-Bezeichner statt Secrets.
  2. Längenregler ziehen für Nicht-UUID-Formate. Die Seite berechnet Entropie-Bits live, sodass man sieht, wann die 64-Bit-, 128-Bit- oder 256-Bit-Schwellenwerte überschritten werden.
  3. Anzahl einstellen wenn mehr als ein Token benötigt wird. Zehn auf einmal zu generieren ist praktisch, wenn man einen Haupttoken, einen Rotations-Backup und einige Test-Fixtures braucht.
  4. Auf "Tokens generieren" klicken, dann "Alle kopieren", um den gesamten Stapel zeilengetrennt zu kopieren, oder auf einen einzelnen Token klicken, um ihn auszuwählen und zu kopieren.
  5. Den Wert sofort an das Ziel übertragen. Im Passwort-Manager ablegen, in .env.local einfügen oder das GitHub-Secret setzen, während der Tab noch offen ist. Tokens verlassen nie die Seite, kommen aber auch nicht zurück; beim Aktualisieren werden sie gelöscht.

Was der Generator intern tut

Alle Zufallsdaten kommen von der Web Crypto API. UUID v4 ruft crypto.randomUUID() auf, das alle aktuellen Chromium-, Firefox- und Safari-Builds mit ihrem CSPRNG unterstützen (BoringSSL auf Chromium, NSS auf Firefox, CommonCrypto auf Safari). Hex-, base64url- und alphanumerische Formate füllen ein Uint8Array uber crypto.getRandomValues() und kodieren es dann: Hex via byte.toString(16).padStart(2, "0"), base64url uber btoa() mit den URL-sicheren Substitutionen aus RFC 4648 Abschnitt 5 (+ wird zu -, / wird zu _, Padding entfernt).

Alphanumerisch ist das einzige Format, das besondere Sorgfalt erfordert. Eine naive byte % 62-Abbildung ist verzerrt, weil 256 kein Vielfaches von 62 ist, sodass die Bytes 248-255 häufiger auf ein Vier-Zeichen-Fenster abgebildet werden als die anderen. Der Generator verwendet Rejection Sampling gegen eine vorberechnete Obergrenze (Math.floor(256 / 62) * 62) und verwirft jeden Byte, der in den ungleichmäßigen Bereich fällt. Die auf der Seite angezeigte Entropie-Schätzung ergibt sich aus length * log2(alphabetSize), sodass 32 base64url-Zeichen 192 Bit melden, 32 Hex-Zeichen 128 Bit und UUID v4 122 Bit (die vier Versions- und Varianten-Bits sind durch RFC 4122 festgelegt).

Wann dieses Tool seinen Zweck erfüllt

  • Initialisierung eines neuen JWT_SECRET, SESSION_SECRET oder COOKIE_SIGNING_KEY für eine gerade aufgesetzte Express-, Hono- oder Rails-App.
  • Generieren eines opaken API-Keys für einen internen Dienst, bevor ein Aussteller mit Datenbankzeile eingerichtet wird.
  • Erzeugen eines CSRF-Tokens für einen manuellen Fetch-Test gegen einen Staging-Endpunkt oder eines Nonce für einen einmaligen script-src-CSP-Test.
  • Erstellen eines Einladungs- oder Aktivierungscodes mit mindestens 80 Bit Entropie, sodass Brute-Force-Enumeration unattraktiv wird.
  • Ausfüllen eines Webhook-Verifikations-Secrets auf einer Stripe-, GitHub- oder Linear-Webhook-Konfigurationsseite, die einen langen Zufallsstring verlangt.
  • Erstellen von Test-Fixtures (tausend UUIDs für einen Lasttest, zwanzig Hex-Secrets für einen Fuzz-Harness) ohne Node- oder Python-Installation.

Häufige Fallstricke und Randfaelle

  • Hex-Strings haben die halbe Entropie bei gleicher Zeichenanzahl wie base64url. Ein 32-Zeichen-Hex-Token ist 128 Bit; ein 32-Zeichen-base64url-Token ist 192 Bit. Die Länge an den benötigten Schwellenwert anpassen, nicht an eine Gewohnheit.
  • UUID v4 ist kein Secret-Format. Nur 122 seiner 128 Bits sind zufällig und die Struktur ist bekannt, sodass das Lecken des Präfixes die Rateversuche einengt. Für alles, das Zugriff gewährt, base64url oder Hex verwenden.
  • Alphanumerisch passt in Hostnamen und Formulare, aber URL-Decoder konvertieren manchmal Gross-/Kleinbuchstaben von percent-kodierten Sequenzen und können Mischfall-Werte korrumpieren. base64url ist in URLs sicherer.
  • Laengenabschnitt ist exakt. Der Generator schneidet die kodierte Ausgabe auf den Reglerwert, sodass ein 32-Zeichen-base64url-Token eine 24-Byte-Quelle verbraucht, auch wenn rohe base64url-Kodierung auf 32 Bytes runden würde. Die Speicherspalte entsprechend anpassen.
  • Das Clipboard-Schreiben erfolgt im Page-Thread. Wenn der Browser navigator.clipboard.writeText in einem nicht sicheren Kontext (HTTP ohne localhost) blockiert, schlägt die Schaltfläche "Alle kopieren" still fehl. ZeroUtil liefert HTTPS, das betrifft also nur lokale Proxys.
  • Tokens bleiben nur im Tab-Speicher. Ein Aktualisieren der Seite löscht sie; sie werden nie in localStorage, IndexedDB oder einem Cookie gespeichert. Sie sind flüchtig bis zum Kopieren.

Token-Formate und ihre Standards

Hex ist das älteste der vier und spec-stabilste: Es ist eine direkte Base-16-Kodierung von Bytes, verwendet von SHA-256-Hex-Digests, MAC-Adressen und den meisten CLI-openssl rand -hex N-Ausgaben. Base64url ist in RFC 4648 Abschnitt 5 definiert und ist die kanonische Kodierung für JWT-Komponenten, JWK-Thumbprints, OAuth-Bearer-Tokens und jeden Kontext, wo +, / oder = mit URL- oder Dateinamenregeln kollidieren würden. UUID Version 4 folgt RFC 4122 (jetzt RFC 9562), der das Versions-Nibble auf 4 und die Varianten-Bits auf 10 festlegt und 122 Bits Zufälligkeit übriglässt; die Kollisionswahrscheinlichkeit überschreitet die Geburtstags-Schranke nach etwa 2,71 Quintillionen Ziehungen - deshalb eignet er sich als Primärschlüssel, aber nicht als Authentifizierungssecret.

Alternativen und wann sie besser sind

In der Befehlszeile erzeugen openssl rand -base64 24 und openssl rand -hex 16 äquivalente Ausgaben und lassen sich in Shell-Pipelines integrieren. Nodes crypto.randomBytes(24).toString("base64url") ist der richtige Aufruf innerhalb einer Anwendung oder eines Seed-Scripts. Pythons secrets.token_urlsafe(24) ist Teil der Standardbibliothek und das nächstliegende Einzelaufruf-Äquivalent. uuidgen ist auf jeder Linux- und macOS-Installation für einfache UUIDs vorhanden. Diese Seite gewinnt, wenn man einen Token braucht, während man Dokumentation in einem anderen Tab liest, kein halb aufgebautes Secret in ein gemeinsames Terminal einfügen möchte und den zukünftigen Produktionsschlüssel nicht an einen Remote-Dienst wie passwordsgenerator.net oder 1password.com senden will.

Häufig gestellte Fragen

Werden diese Tokens auf einem Server generiert?

Nein. Tokens werden im Browser mithilfe der Web-Crypto-Zufallsgenerierung erzeugt. ZeroUtil empfängt oder speichert die generierten Werte nicht.

Welches Format sollte ich wählen?

Base64url für URL-sichere Secrets verwenden, Hex wenn ein System hexadezimale Strings erwartet, alphanumerisch für restriktive Formulare und UUID v4 wenn ein eindeutiger Bezeichner statt eines Secrets benötigt wird.

Wie lang sollte ein Token sein?

Für Secrets sind 32 base64url-Zeichen oder 64 Hex-Zeichen gute Standardwerte. Kürzere Werte können für Nicht-Secret-Bezeichner ausreichen, aber Authentifizierungs-Tokens sollten hohe Entropie bewahren.

Mehr Security & Privacy