2FA-Backupcodes mit Seed generieren
Dieser Generator für Zweifaktor-Backupcodes erstellt exakt die gewünschte Anzahl eindeutiger, einmalig nutzbarer Wiederherstellungscodes im üblichen Format aus vier Ziffern, Bindestrich und vier Ziffern.
Im Browser ausführen – kostenlos
Geben Sie eine Anzahl und einen geheimen Seed ein, dann ergeben dieselben Eingaben stets dieselbe geordnete Liste. Diese Reproduzierbarkeit eignet sich für kontrollierte Bereitstellungen, Testdaten, dokumentierte Wiederherstellungsabläufe und Systeme, die Codes rekonstruieren müssen, ohne die erzeugte Liste zu speichern. Die Berechnung erfolgt ausschließlich lokal: Netzwerk, Uhrzeit, Zufallsquelle, Kontodaten und verborgener Zustand werden nicht verwendet. Behandeln Sie den Seed und jeden erzeugten Code als vertrauliches Authentifizierungsmaterial.
Anzahl wählen und Seed schützen
Legen Sie zunächst fest, wie viele Wiederherstellungscodes das Konto oder die Anwendung ausgeben soll. Die Anzahl muss eine ganze Zahl zwischen eins und eintausend sein; eine Anfrage mit einem Wert unter eins wird abgewiesen, statt unbemerkt eine leere Liste zu erzeugen. Geben Sie anschließend einen nicht leeren Seed an. Der Seed ist die vollständige Grundlage der Reproduzierbarkeit. Identische Werte für Seed und Anzahl liefern daher identische Codes in derselben Reihenfolge. Verwenden Sie ein langes Geheimnis mit hoher Entropie, das nach dem von Ihrer Organisation genehmigten Verfahren zur Geheimnisverwaltung erzeugt und gespeichert wurde. Personennamen, E-Mail-Adressen, Projektbezeichnungen und kurze, leicht merkbare Sätze sind für den Produktivbetrieb ungeeignet, weil andere sie erraten und die Codes rekonstruieren könnten. Verwenden Sie denselben Seed nicht für verschiedene Benutzer, Umgebungen oder Dienste. Die interne Domänentrennung des Algorithmus verhindert versehentliche Überschneidungen mit anderen Ableitungen, gleicht aber keinen schwachen oder offengelegten Seed aus. Kennzeichnen und isolieren Sie Test-Seeds für reproduzierbare automatisierte Tests eindeutig, damit deren Ergebnisse niemals von einem produktiven Authentifizierungssystem akzeptiert werden. Die Länge ist auf 4,096 Zeichen begrenzt, damit die Ausführung beschränkt und vorhersehbar bleibt.
Deterministische Erzeugung verstehen
Jede Ausgabeposition wird mit SHA-256 getrennt aus einer versionierten Kennzeichnung, der exakten Seed-Länge, dem Seed-Text, der bei null beginnenden Position und einem Wiederholungszähler abgeleitet. Die Angabe der Länge macht die Gliederung der Eingabe eindeutig, während die versionierte Kennzeichnung diesen Zweck von anderen Seed-basierten Berechnungen trennt. Der Generator liest vorzeichenlose Werte aus dem Hash und wendet Rejection Sampling an, bevor er sie auf acht Dezimalziffern reduziert. Dadurch wird die geringe Verteilungsverzerrung vermieden, die bei einer direkten Modulo-Umrechnung entstünde. Jede akzeptierte Zahl wird als zwei durch einen Bindestrich getrennte Vierergruppen formatiert; führende Nullen bleiben erhalten. Eine Menge hält bereits ausgegebene Werte fest. Bei einer Kollision wird der Zähler deterministisch erhöht, bis ein neuer Code gefunden ist. Das Ergebnis enthält somit die angeforderte Anzahl eindeutiger Codes, und eine erneute Ausführung reproduziert sowohl die Kollisionsentscheidungen als auch die endgültige Liste. Weder Netzwerkdienste noch Systemzeit, Laufzeit-Zufallsgenerator, persistenter Cache oder veränderlicher Modulzustand können die Antwort beeinflussen. Schon die Änderung eines einzigen Zeichens im Seed verändert normalerweise die gesamte Liste.
Codes sicher einsetzen, speichern und ungültig machen
Die Erzeugung ist nur ein Bestandteil eines Backupcode-Verfahrens. Ihr Authentifizierungsdienst muss für jeden Code einen zugelassenen Prüfwert speichern, einen Code nach der ersten erfolgreichen Nutzung als verbraucht markieren, Versuche begrenzen und eine ausdrückliche Funktion zum Widerrufen oder Neuerzeugen anbieten. Schreiben Sie Seed oder Klartextcodes niemals in Analysedaten, Ablaufprotokolle, Supportanfragen, Build-Ausgaben oder gemeinsame Chats. Übermitteln Sie die Codes dem authentifizierten Benutzer in einer geschützten Sitzung und empfehlen Sie eine Offline-Aufbewahrung in einem Passwortmanager oder an einem anderen sicheren Ort. Determinismus erleichtert Notfallwiederherstellung und kontrollierte Bereitstellung, bedeutet jedoch auch, dass jede Person mit Zugriff auf den Seed sämtliche Codes rekonstruieren kann. Wechseln Sie bei vermuteter Offenlegung, auf Wunsch des Benutzers oder bei einer vorgeschriebenen Ungültigmachung der alten Liste zu einem neuen, unabhängigen Seed. Fordern Sie nicht lediglich eine andere Anzahl mit dem bisherigen Seed an: Die gemeinsamen Positionen beider Anfragen bleiben gleich. Gruppierte Ziffern vereinfachen die Übertragung, doch pro Code gibt es nur einhundert Millionen mögliche Werte. Schutzmaßnahmen für Online-Versuche bleiben deshalb unverzichtbar. Die API kostet $0.002 je Anfrage; im Browser läuft dieselbe reine Berechnung.
Anwendungsfälle
Wiederherstellungscodes bereitstellen
Erzeugen Sie bei der Registrierung eine kontrollierte Liste gruppierter Wiederherstellungscodes mit reproduzierbarer Ableitung aus einem geschützten Seed je Benutzer.
Stabile Authentifizierungstests erstellen
Erzeugen Sie feste Backupcode-Testdaten für Integrationstests, ohne eine manuell gepflegte Liste im Repository abzulegen.
Eine freigegebene Codeliste rekonstruieren
Stellen Sie in einem dokumentierten Vorfallverfahren dieselbe geordnete Liste wieder her, wenn der geschützte Seed, aber nicht mehr die angezeigte Kopie verfügbar ist.
Häufige Fragen
Welches Format verwenden die Codes?
Jeder Code besteht aus acht Dezimalziffern in zwei Vierergruppen, beispielsweise 0123-4567. Führende Nullen bleiben erhalten.
Liefern dieselben Eingaben immer dieselben Codes?
Ja. Der Algorithmus hängt weder von Zufall, Uhrzeit, Netzwerk noch gespeichertem Zustand ab. Dieselbe Anzahl und der exakte Seed reproduzieren daher dieselbe geordnete Liste.
Kann eine Antwort doppelte Codes enthalten?
Nein. Kollisionen werden erkannt und deterministisch wiederholt, bis die angeforderte Liste ausschließlich eindeutige Codes enthält.
Kann ich einen leicht merkbaren Seed verwenden?
Nicht im Produktivbetrieb. Verwenden Sie ein langes Geheimnis mit hoher Entropie aus einem zugelassenen Erzeugungs- und Speicherverfahren, da jeder mit Kenntnis des Seeds die Codes rekonstruieren kann.
Was geschieht bei einer Anzahl von null oder weniger?
Die Anfrage schlägt mit einem Fehler für ungültige Eingaben fehl, der angibt, dass die Anzahl mindestens eins betragen muss.
Was kostet eine API-Anfrage?
Jede API-Anfrage kostet $0.002. Die Browserversion führt denselben reinen Algorithmus lokal aus.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/security/two-factor-backup-codes-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"count":8,"seed":"correct-horse-battery-staple-2026"}'const res = await fetch("https://api.kit.forhosting.com/security/two-factor-backup-codes-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"count": 8,
"seed": "correct-horse-battery-staple-2026"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/security/two-factor-backup-codes-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"count": 8,
"seed": "correct-horse-battery-staple-2026"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/security/two-factor-backup-codes-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"count":8,"seed":"correct-horse-battery-staple-2026"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"count":8,"seed":"correct-horse-battery-staple-2026"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/security/two-factor-backup-codes-generate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"count": 8,
"seed": "correct-horse-battery-staple-2026"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "security.two_factor_backup_codes_generate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |