Skip to main content

TOTP Generator

Generate time-based one-time passwords (TOTP) from a base32 secret with live 30-second countdown.

Geprüft von · Zuletzt geprüft

Einen 2FA-Code aus einem Base32-Geheimnis generieren

  1. Füge das Base32-Geheimnis in das Eingabefeld ein. Die meisten Websites zeigen es auf der 2FA-Einrichtungsseite unter "QR-Code nicht scannen können?" oder "Manuelle Eingabe". Gültiges Base32 verwendet nur A-Z und 2-7; das Auffüllzeichen = ist optional.
  2. Beobachte, wie der Code erscheint. Das Tool berechnet das aktuelle 6-stellige TOTP und zeigt es mit einem 30-Sekunden-Countdown-Ring an, der den Code bei jeder Fenstergrenze aktualisiert.
  3. Kopiere die Ziffern durch Klicken auf den Code selbst oder die Kopiertaste. Der Code ist für die verbleibenden Sekunden auf dem Ring plus ein Fenster auf beiden Seiten bei den meisten Servern gültig.
  4. Gib den Code in das Anmeldefeld des Dienstes ein. Wird er abgelehnt, prüfe deine Geräteuhr - TOTP ist sekundengenau zeitkritisch.
  5. Warte 30 Sekunden auf einen frischen Code, wenn der aktuelle kurz vor dem Ablauf ist. Gib keinen Code mit weniger als 3 verbleibenden Sekunden ein; allein die Netzwerklatenz kann ihn über das Fenster schieben.

Das 30-Sekunden-Geheimnis: HOTP, TOTP, HMAC-SHA-1

TOTP ist in RFC 6238 spezifiziert und baut auf HOTP (RFC 4226) auf. Der Algorithmus: TOTP = Truncate(HMAC-SHA-1(K, T)), wobei K das Base32-dekodierte Geheimnis und T = floor((currentUnixTime - T0) / X) mit T0 = 0 und X = 30 Sekunden ist. Das Tool dekodiert Base32 in den HMAC-Schlüssel, packt das Zeitfenster als 8-Byte-Big-Endian-Integer, berechnet HMAC-SHA-1 via crypto.subtle.sign und wendet dann dynamische Trunkierung an (RFC 4226 Abschnitt 5.3): niedrige 4 Bits des letzten Bytes als Offset, lese dort 4 Bytes, maskiere das oberste Bit, Modulo 10^6. Google Authenticator, Authy und Microsoft Authenticator verwenden genau diese Standardwerte.

Wann du ein eigenständiges TOTP-Tool verwendest

  • Testen einer frisch eingerichteten 2FA-Integration während der Entwicklung, wo du das Geheimnis hast, aber deinen persönlichen Authenticator nicht mit Testeinträgen belasten möchtest.
  • Zugang wiederherstellen nach dem Verlust deines Telefons, wenn du das Base32-Geheimnis in einem Passwort-Manager gespeichert hast statt nur den QR-Code.
  • Debuggen, warum die Codes deiner Nutzer abgelehnt werden: Füge dasselbe Geheimnis ein, das dein Backend speichert, und prüfe, ob es mit Google Authenticator übereinstimmt.
  • Automatisierung von 2FA in einer CI-Pipeline für End-to-End-Tests gegen eine Staging-Umgebung, wo JavaScript-Testcode einloggen muss.
  • Erstellen einer benutzerdefinierten Authenticator-App und Verwendung einer bekannten guten Referenz zur Validierung deiner TOTP-Implementierung.
  • Generieren eines 2FA-Codes auf dem Desktop, wenn dein Telefon außer Reichweite ist, mit dem in einem Passwort-Manager gesicherten Geheimnis.

Uhrabweichung, Base32-Auffüllung und Geheimnis-Speicher-Fallstricke

Der häufigste TOTP-Fehler ist Uhrabweichung. Wenn deine Uhr mehr als 30 Sekunden von der Wandzeit abweicht, werden Codes abgelehnt. Server akzeptieren typischerweise plus/minus ein Fenster Toleranz (RFC 6238 Abschnitt 5.2), sodass bis zu einer Minute Drift überlebt; darüber hinaus mit NTP synchronisieren. Zweiter Fallstrick: Base32-Dekodierung. Das Kopieren eines Geheimnisses kann Kleinbuchstaben, Leerzeichen oder die Ziffern 0/1 einführen, die kein gültiges Base32 sind. Das Tool entfernt Leerzeichen und wandelt in Großbuchstaben um vor der Dekodierung. Drittens: Das Geheimnis hat Trager-Niveau - behandle es wie ein Passwort, speichere es in einem Manager, widerrufe es bei einem Leak. Viertens: Manche Dienste verwenden nicht standardmäßige Parameter (6 vs. 8 Stellen, 30 vs. 60-Sekunden-Fenster, SHA-256 statt SHA-1). Dieses Tool implementiert Standardwerte; wenn ein Dienst Nicht-Standardwerte verwendet, wird auch Google Authenticator nicht funktionieren.

Warum TOTP im Jahr 2026 HMAC-SHA-1 verwendet

HMAC-SHA-1 bleibt der TOTP-Standard trotz SHA-1-Kollisionsangriffen, weil HMACs Sicherheit nicht von der Kollisionsresistenz abhängt - nur von der Pseudozufallsfunktions-Eigenschaft, die SHA-1 noch hat. Der SHAttered-Angriff von 2017 und die gewählte-Prefix-Kollision von 2020 gegen SHA-1 haben Zertifikatssignierung gebrochen, nicht HMAC. RFC 6238 Abschnitt 1.2 stellt ausdrücklich fest, dass HMAC-SHA-256- und HMAC-SHA-512-Varianten existieren und über otpauth://-URI-Parameter angefordert werden können, aber die installierte Basis von Google Authenticator und kompatiblen Apps verwendet standardmäßig SHA-1, sodass die meisten Dienste für Interoperabilität beim Standard bleiben. Die Trunkierung auf 6 Stellen ist bewusst: Sie begrenzt das Tag auf etwa 20 Bits Unvorhersehbarkeit pro 30-Sekunden-Fenster, aber kombiniert mit Rate-Limiting auf dem Server (Sperrung nach 5-10 falschen Codes) liegt die effektive Angriffserfolgsrate bei etwa einer von einer Million pro Sperrintervall - akzeptabel, weil das Geheimnis alle 30 Sekunden rotiert.

TOTP vs. Push-basiertes 2FA, WebAuthn und SMS

TOTP ist der Mittelweg: sicherer als SMS (kein SS7-Abfangen, kein SIM-Tausch), einfacher als WebAuthn, portabler als Push (funktioniert offline). Der Nachteil gegenüber WebAuthn: Das Base32-Geheimnis liegt im Klartext vor, wenn der Server kompromittiert wird, und TOTP ist phishbar - der Code wird genau wie das Passwort auf einer von einem Angreifer kontrollierten Seite eingegeben. WebAuthn (FIDO2/Passkeys) verwendet asymmetrische Kryptografie und bezieht die Ursprungsdomäne in die signierte Challenge ein, was Phishing verhindert. Aufstieg vom schwächsten zum stärksten: SMS-OTP (NIST SP 800-63B für den Bundeseinsatz verworfen), TOTP, Push-2FA, WebAuthn. Für neue Deployments biete WebAuthn zuerst an und TOTP als Fallback; niemals nur SMS.

Häufig gestellte Fragen

Warum weicht der Code von meiner Authenticator-App ab?

Drei häufige Ursachen: Uhrabweichung auf einem der Geräte (TOTP ist zeitbasiert; mehr als 30 Sekunden Abweichung von UTC liefert falsche Codes), falsches Geheimnis (prüfe, ob das eingefügte Base32 mit dem in der App übereinstimmt) oder nicht standardmäßige Parameter (manche Dienste verwenden 8 Stellen oder SHA-256 statt der RFC-6238-Standardwerte, die dieses Tool implementiert). Synchronisiere die Systemuhr mit NTP, gib das Geheimnis erneut ein und bestätige, dass der Dienst 6-stelliges SHA-1 30-Sekunden-TOTP verwendet. Stimmen alle drei überein und die Codes weichen noch ab, liegt es fast sicher an der Uhrabweichung - ein Unterschied von 45 Sekunden ergibt ein anderes 30-Sekunden-Fenster und damit einen völlig anderen Code.

Wird mein Base32-Geheimnis gespeichert oder übertragen?

Nein. Das Geheimnis lebt nur im useState-Hook der Komponente und wird lokal über eine JavaScript-Base32-Routine dekodiert. HMAC-SHA-1 läuft in der nativen Krypto-Bibliothek des Browsers via crypto.subtle.sign. Es gibt keine localStorage-Persistenz, kein IndexedDB, keinen fetch-Aufruf und kein Telemetrie-Ereignis, das das Geheimnis enthält. Das Tool funktioniert nach dem ersten Seitenladen offline. Für eine Tab-Persistenz kopiere das Geheimnis in einen Passwort-Manager; ein Seitenneuladen löscht es.

Ist dieses Tool als täglicher Treiber für echte 2FA-Konten geeignet?

Nicht ideal. Dedizierte Authenticator-Apps (Google Authenticator, Authy, 1Password, Bitwarden, Aegis, Raivo) speichern das Geheimnis in verschlüsseltem lokalem Speicher mit biometrischer Entsperrung, sichern es Ende-zu-Ende verschlüsselt in der Cloud und unterstützen Funktionen, die dieses Tool nicht bietet (mehrere Konten, QR-Scan, verschlüsselter Export). Dieses Tool eignet sich am besten zum Testen, zur einmaligen Code-Generierung und zum Debuggen. Für produktive 2FA kombiniere einen hardware-gestützten Authenticator (Aegis auf Android mit verschlüsselter Datenbank, iOS Keychain-gestützt oder ein YubiKey) mit einem Ausdruck der Wiederherstellungscodes.

Funktioniert das mit Microsoft Authenticator, Authy und 1Password?

Ja. Alle drei implementieren Standard-RFC-6238-TOTP mit 6 Stellen, 30-Sekunden-Fenster und SHA-1 - genau was dieses Tool erzeugt. Wenn du das Base32-Geheimnis aus einem Microsoft-Authenticator-Export oder dem Einmalpasswort-Feld von 1Password einfügst, stimmen die Codes überein. Manche Dienste bieten mittlerweile proprietäres Push-basiertes 2FA an, das nicht TOTP-basiert ist; diese können hier nicht generiert werden.

Kann ich HOTP-Codes (zählerbasiert) mit diesem Tool erzeugen?

Nein. Dieses Tool implementiert nur TOTP (RFC 6238, zeitbasiert). HOTP (RFC 4226, zählerbasiert) verwendet dieselbe HMAC-SHA-1-Trunkierung, aber mit einem inkrementierenden Zähler statt einem Zeitfenster. HOTP wird vom YubiKey OATH-HOTP-Modus und einigen Legacy-SSH-Setups verwendet; die meisten 2FA-Anwendungen für Verbraucher sind auf TOTP umgestiegen.

Ist HMAC-SHA-1 angesichts von SHA-1-Kollisionsangriffen noch sicher für TOTP?

Ja. SHA-1-Kollisionen (SHAttered 2017) brechen die Kollisionsresistenz, aber nicht die Pseudozufallsfunktions-Eigenschaft, die HMAC benötigt. HMAC-SHA-1 ist nach wie vor ein sicherer MAC und bleibt FIPS-genehmigt für die Authentifizierung. RFC 6238 erlaubt SHA-256- und SHA-512-Varianten, aber die installierte Authenticator-App- Basis verwendet standardmäßig SHA-1 für die Interoperabilität. Die 20-Bit-Ausgabe-Trunkierung ist der eigentliche Sicherheitsparameter, nicht die zugrunde liegende Hash-Wahl.

Was passiert, wenn der Angreifer mein Base32-Geheimnis hat?

Er kann für immer gültige 2FA-Codes erzeugen, bis du das Geheimnis serverseitig rotierst (2FA beim Dienst deaktivieren und neu aktivieren). Deshalb ist TOTP nur ein zweiter Faktor, kein Passwort-Ersatz - ein Geheimnis-Leak ist behebbar, wenn du noch das Passwort hast, und ein Passwort-Leak ist behebbar, wenn du noch das TOTP hast. Wenn beides gleichzeitig geleakt wird, ist es zu spät. Speichere das Base32 in einem Passwort-Manager mit Verschlüsselung im Ruhezustand, nicht im Klartext in einer Notiz-App oder einer Screenshot-Galerie.

Wie genau muss meine Systemuhr sein?

Im schlimmsten Fall innerhalb von 30 Sekunden von UTC; in der Praxis innerhalb weniger Sekunden. Die meisten Server akzeptieren das vorherige, aktuelle und nächste Fenster (insgesamt 90 Sekunden Toleranz). Wenn deine Uhr mehr als 30 Sekunden vor- oder nachgeht, werden manche Dienste den Code ablehnen. Moderne Betriebssysteme synchronisieren standardmäßig automatisch via NTP; wenn du die Zeitsynchronisation manuell deaktiviert hast oder deine Mainboard-Batterie leer ist, werden Codes gelegentlich fehlschlagen. Führe ntpdate oder das OS-Äquivalent zur erneuten Synchronisation aus.

Mehr Security & Privacy