TOTP-generator
Elke keer dat Google Authenticator of Authy een zescijferige code toont die elke 30 seconden verandert, is dat TOTP: een HMAC van een gedeelde geheime sleutel en de huidige Unix-tijd, gestandaardiseerd in RFC 6238. Deze generator berekent dezelfde codes uit elke willekeurige Base32-sleutel. Dat is handig om een nieuwe koppeling met tweestapsverificatie (2FA) te debuggen, uit te zoeken waarom een dienst uw codes afwijst, of te bekijken hoe het algoritme op andere parameters reageert. Gebruik hier testsleutels: de code wordt op onze server berekend, dus de echte sleutels die uw accounts beschermen horen in een authenticator-app en niet op een webpagina.
Zo werkt deze TOTP-generator
-
1
Plak een Base32-sleutel
Letters A-Z en cijfers 2-7, het formaat in otpauth://-QR-codes. Spaties en kleine letters zijn geen probleem; al het andere wordt gemeld als ongeldige Base32.
-
2
Kies het hash-algoritme
SHA-1 wordt door vrijwel elke dienst gebruikt; stap alleen over op SHA-256 of SHA-512 als de dienst dat uitdrukkelijk vereist.
-
3
Stel cijfers en periode in
Kies 6, 7 of 8 cijfers en een venster van 30 of 60 seconden. De standaardcombinatie is 6 cijfers per 30 seconden.
-
4
Lees de huidige code af
De code wordt elke seconde ververst en het aftellen laat zien hoeveel seconden het huidige venster nog heeft.
-
5
Vergelijk de otpauth-URI
De tool toont de otpauth://-URI voor uw parameters, zodat u die kunt vergelijken met wat de instel-QR-code van een dienst codeert.
Het algoritme in gewone taal
TOTP is HOTP (eenmalig wachtwoord op basis van HMAC, RFC 4226) waarbij de teller is vervangen door de huidige Unix-tijd gedeeld door de tijdstap (meestal 30 seconden):
counter = floor(unix_time / 30)
hash = HMAC-SHA1(secret, counter_as_8_byte_big_endian)
offset = last byte of hash AND 0x0F
truncated = 4 bytes from offset, with the top bit zeroed
code = truncated mod 10^digits
Uw apparaat en de server doen dezelfde berekening met dezelfde sleutel en dezelfde klok, en komen dus op dezelfde code uit zonder dat die code ooit wordt verstuurd. Een 6-cijferige code is simpelweg de afgekapte HMAC modulo 10^6. Geen magie, alleen hashing.
Gangbare parameters
| Dienst | Algoritme | Cijfers | Periode |
|---|---|---|---|
| De meeste websites en apps | SHA-1 | 6 | 30 s |
| GitHub | SHA-1 | 6 | 30 s |
| Cloudflare | SHA-1 | 6 | 30 s |
| Microsoft-accounts | SHA-1 | 6 | 30 s |
| Sommige banken en zakelijke VPN’s | SHA-256 of SHA-512 | 8 | 60 s |
Wijst een dienst uw codes af, controleer dan eerst het aantal cijfers en de periode, en daarna het algoritme. Weet ook dat sommige authenticator-apps afwijkende parameters stilzwijgend negeren (Google Authenticator behandelde vroeger alles als SHA-1, 6 cijfers, 30 seconden). Test dus altijd met precies de app die uw gebruikers zullen gebruiken.
Sleutels veilig bewaren
- Stuur een 2FA-sleutel nooit per e-mail of bericht. Zodra die in een postvak staat, blijft hij voorgoed in de logs en back-ups van de provider.
- Stel 2FA in door de QR-code te scannen. De QR-code bevat een
otpauth://totp/...-URI die sleutel, algoritme, cijfers en periode in één ondubbelzinnig pakket bundelt. - Maak een back-up bij het instellen. Bewaar de herstelcodes, of de sleutel zelf, in een wachtwoordmanager; zonder die staat u buiten als u uw telefoon kwijtraakt.
- Eén sleutel per dienst. Elke dienst geeft bij het instellen een eigen sleutel uit; lekt er een uit, stel 2FA daar dan opnieuw in zodat de oude sleutel stopt met werken.
Klokafwijking
TOTP werkt alleen zolang beide klokken gelijk lopen. Deze pagina berekent de codes met de klok van de server. Wijkt de code hier af van uw authenticator-app, dan is de klok van het apparaat de eerste verdachte. De meeste validators accepteren één venster afwijking naar beide kanten (30 tot 60 seconden); daarbuiten synchroniseert u de apparaatklok via NTP voordat u de sleutel de schuld geeft.
Gebruik hier testsleutels
Deze tool berekent de code op onze server: de sleutel die u invoert wordt bij elke update via HTTPS verzonden en verschijnt ook in de pagina-URL wanneer u tussen de stappen van de tool navigeert. Voor ontwikkeling, demo’s en debuggen met wegwerpsleutels is dat prima. Het is niet de plek voor de echte sleutel die uw e-mail of bankrekening beschermt; die hoort in een speciale authenticator-app op uw telefoon. Hebt u al een echte sleutel buiten uw authenticator geplakt, stel 2FA bij die dienst dan opnieuw in zodat de sleutel wordt vervangen.
Veelgestelde vragen
Beschouw deze pagina als een ontwikkel- en testhulpmiddel, niet als een kluis. De code wordt op de server berekend, dus de sleutel gaat via HTTPS naar onze server en kan tussen de stappen in de pagina-URL verschijnen. Gebruik gerust demo- of ontwikkelsleutels; plak nooit de echte sleutel van een account dat u belangrijk vindt. Is dat al gebeurd, stel 2FA bij die dienst dan opnieuw in om de sleutel te vervangen.
Controleer eerst de parameters: algoritme, aantal cijfers en periode moeten exact overeenkomen met wat de dienst heeft uitgegeven. Controleer daarna de klokken: deze pagina gebruikt de klok van de server, dus een verschil wijst meestal naar het andere apparaat. Bedenk tot slot dat sommige apps afwijkende parameters negeren; Google Authenticator is het klassieke voorbeeld.
Alleen Base32: letters A tot Z en cijfers 2 tot 7, met optionele =-opvulling. Spaties worden verwijderd en kleine letters automatisch omgezet. Sleutels in hex of ruwe bytes moeten eerst naar Base32 worden omgezet, anders meldt de tool een ongeldige Base32-sleutel.
Dan staat u buiten de 2FA van dat account. Gebruik de herstelprocedure van de dienst (herstelcodes, identiteitscontrole, sms als terugvaloptie). Bewaar bij het instellen altijd de herstelcodes of de oorspronkelijke QR-code op een veilige plek.
Ja. Genereer op de server een willekeurige sleutel van minstens 128 bits (RFC 4226 raadt 160 aan), toon die eenmalig als QR-code en valideer ingestuurde codes door dezelfde HMAC te berekenen, doorgaans met één venster tolerantie naar beide kanten. Er zijn volwassen bibliotheken voor elke stack: pyotp (Python), otplib (JavaScript), rotp (Ruby).
Gerelateerde tools
Getal-naar-letter-code
Zet getallen om naar letters en terug met de code A=1, B=2 (A1Z26) voor puzzels, raadsels en aanwijzingen in escaperooms.
HMAC-generator
Genereer HMAC-signatuurpatronen (SHA-256, SHA-384, SHA-512, SHA-1 en MD5) uit een bericht en een geheime sleutel voor API-autentificatie en webhooks.
Hashgenerator
Genereer MD5-, SHA-1-, SHA-256-, SHA-384-, SHA-512- en CRC32-hashen uit tekst, met een kopieerklare digest voor checksums en vergelijkingen.
JWT-generator
Genereer ondertekende JWT's met een aangepaste header, payload-claims, HMAC- of RSA-ondertekening, vervaldatum en doelgroepbeperkingen voor testdoeleinden.
MD5-generator
Genereer een MD5-hash van willekeurige tekst of een bestand. Het resultaat is een 128-bits hash in hexadecimaal formaat en wordt volledig in uw browser berekend.
Wachtwoordzin-generator
Genereer een onthoudbare wachtwoordzin uit willekeurige, veelvoorkomende woorden, met een instelbaar aantal woorden, een scheidingsteken, hoofdletters en een optioneel toegevoegd getal.
Tool beschikbaar in andere talen
- ตัวสร้าง TOTP [TH]
- Generador TOTP [ES]
- Generator TOTP [PL]
- TOTPジェネレーター [JA]
- Gerador TOTP [PT]
- TOTP-generator [SV]
- Bộ tạo TOTP [VI]
- مولد TOTP [AR]
- Générateur TOTP [FR]
- TOTP-Generator [DE]
- Generator TOTP [ID]
- TOTP 생성기 [KO]
- TOTP Üretici [TR]
- TOTP 生成器 [ZH]
- TOTP Generator [EN]
- Generatore TOTP [IT]
- Генератор TOTP [RU]