So erzeugen Sie zufälliges Base64
- Stellen Sie unter Bytes ein, wie viel Zufall Sie brauchen, von 1 bis 4096. Die Voreinstellung von 32 Bytes entspricht 256 Bit.
- Wählen Sie das Format: Base64, Base64URL (URL-sicher, ohne Padding) oder Hex. Bei Base64 können Sie zusätzlich Ohne Padding (=) aktivieren.
- Mit Anzahl erzeugen Sie mehrere Werte auf einmal, bis zu 1000, einen pro Zeile.
- Kopieren Sie die Ausgabe, laden Sie sie als Textdatei herunter oder drücken Sie Neu erzeugen für einen frischen Satz. Entropie und Länge unter der Ausgabe zeigen die Zufallsbits und die Zeichenanzahl.
Brauchen Sie einen Schlüssel in einem bestimmten Format, etwa einen Laravel-APP_KEY oder einen AES-256-Schlüssel, nehmen Sie eine der Vorlagen oben; der Base64-Schlüsselgenerator erklärt jede davon.
Wie lang die Ausgabe wird
Der Zufall steckt in den Bytes; das Format entscheidet nur, wie sie geschrieben werden. Base64 packt 6 Bit in jedes Zeichen, Hex nur 4, daher ist Hex bei gleicher Stärke immer länger:
| Bytes | Bit | Base64 | Base64 ohne Padding | Base64URL | Hex |
|---|---|---|---|---|---|
| 8 | 64 | 12 | 11 | 11 | 16 |
| 16 | 128 | 24 | 22 | 22 | 32 |
| 24 | 192 | 32 | 32 | 32 | 48 |
| 32 | 256 | 44 | 43 | 43 | 64 |
| 48 | 384 | 64 | 64 | 64 | 96 |
| 64 | 512 | 88 | 86 | 86 | 128 |
Durch 3 teilbare Byte-Anzahlen (24, 48) erzeugen überhaupt kein =, deshalb stimmen die Spalten mit und ohne Padding überein. Verwenden Sie Base64URL, wenn der Wert in eine URL, einen Dateinamen oder ein Cookie kommt, denn + und / müssten dort maskiert werden.
Wie viele Bytes Sie nehmen sollten
- Eindeutige IDs, Request-IDs, Upload-Namen: 16 Bytes (128 Bit). Das Erraten oder eine Kollision ist praktisch kein Thema.
- Session-Tokens, API-Tokens, Links zum Zurücksetzen von Passwörtern: 32 Bytes. Die zusätzliche Reserve kostet etwa 20 Zeichen.
- Salts für Passwort-Hashing: 16 Bytes sind die übliche Empfehlung; das Salt muss nicht geheim sein, nur eindeutig.
- Testdaten: jede Größe, und mit Anzahl füllen Sie eine Datei auf einen Schlag mit tausend Werten.
Ein Zufallsstring ist nur so stark wie seine Byte-Anzahl. Wer einen 44-Zeichen-Wert auf 20 Zeichen kürzt, damit er in ein Feld passt, wirft mehr als die Hälfte seiner Entropie weg. Wählen Sie stattdessen eine kleinere Byte-Anzahl und behalten Sie die vollständige Ausgabe.
Dasselbe im Terminal oder im Code
Alle diese Befehle erzeugen 32 Zufallsbytes als Base64 (secrets.token_urlsafe im URL-sicheren Alphabet, ohne Padding):
openssl rand -base64 32
head -c 32 /dev/urandom | base64
import base64, secrets
print(base64.b64encode(secrets.token_bytes(32)).decode())
print(secrets.token_urlsafe(32))
In Node.js liefert crypto.randomBytes(32).toString("base64url") die URL-sichere Form. Eine Falle bei OpenSSL: Ab mehr als 48 Bytes bricht openssl rand -base64 die Ausgabe bei 64 Zeichen um, ein 64-Byte-Wert kommt also in zwei Zeilen an. Verwenden Sie openssl rand 64 | openssl base64 -A für eine einzige Zeile, oder entfernen Sie den Zeilenumbruch, bevor der Wert in eine Konfigurationsdatei kommt. Weitere Rezepte finden Sie auf den Seiten OpenSSL und Python.
Häufige Fragen
Ist dieser Zufallsgenerator sicher genug für Passwörter und Tokens?
Ja. Er verwendet crypto.getRandomValues, den kryptografisch sicheren Zufallsgenerator des Browsers. Verwenden Sie Math.random() für nichts Geheimes; es ist nicht darauf ausgelegt, unvorhersagbar zu sein.
Wie bekomme ich einen zufälligen Base64-String mit genau N Zeichen?
Wählen Sie N × 3 ÷ 4 Bytes. Bei einer durch 3 teilbaren Byte-Anzahl gibt es kein Padding, 33 Bytes ergeben also genau 44 Zeichen und 48 Bytes genau 64. Andernfalls aktivieren Sie Ohne Padding (=), dann ist die Länge ⌈4 × Bytes ÷ 3⌉.
Können zwei erzeugte Werte jemals gleich sein?
Theoretisch ja, aber ab 16 Bytes (128 Bit) ist die Wahrscheinlichkeit vernachlässigbar: Sie bräuchten rund 2^64 Werte, bevor eine Kollision wahrscheinlich wird. Deshalb gelten 16 Bytes als übliches Minimum für eindeutige Zufalls-IDs.
Werden die Werte irgendwo gespeichert?
Nein. Sie liegen im Speicher dieses Tabs, bis Sie sie kopieren oder herunterladen, und die Seite kann außer dem Seitenaufrufzähler von Cloudflare keine Netzwerkanfragen stellen. Laden Sie die Seite neu, und sie sind weg.