Persoonlijke beveiliging

TOTP/HOTP-codegenerator

Draait lokaal

De tool zelf is in het Engels; op deze pagina wordt uitgelegd hoe deze werkt in uw taal.

Gebruik TOTP/HOTP-codegenerator

Wat het doet

Bereken eenmalige wachtwoorden op basis van tijd (TOTP) of een teller (HOTP) voor een Base32-geheim, net zoals authenticatie-apps dat doen, en controleer of een code overeenkomt. Handig om je eigen 2FA-configuratie te testen.

Het draait volledig in je browser: er wordt niets van wat je invoert geüpload.

Hoe gebruik je TOTP/HOTP-codegenerator

  1. Voer het wachtwoord in. Plak de Base32-geheime code van je eigen testaccount in het veld ‘Geheime sleutel (Base32)’, of klik op ‘Willekeurig’ voor een nieuwe geheime code van 32 tekens.
  2. Pas de instellingen van je app aan. Kies het codetype (TOTP op basis van tijd of HOTP op basis van een teller), het algoritme en het aantal cijfers. De meeste authenticatie-apps maken gebruik van TOTP, HMAC-SHA-1 en 6 cijfers.
  3. Toon de code. Voor TOTP druk je op ‘Start TOTP’: de code verschijnt met een aftelling en wordt elke seconde opnieuw berekend. Voor HOTP stel je de teller in en druk je op ‘HOTP-code weergeven’; met ‘Volgende’ ga je naar de volgende teller.
  4. Een code controleren. Voer een code uit je app of van een server in bij ‘Code verifiëren’ en druk op ‘Verifiëren’. Het resultaat geeft aan of de code overeenkomt en voor welke tijdstap of teller.
  5. Stop en wis. Druk op Stop als je klaar bent; de laatste code blijft op het scherm staan. Maak het geheime veld zelf leeg.

Voorbeeld

RFC 6238-testgeheim

Invoer
GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ
Uitvoer (vastgelegd op 2026-10-20)
412568

Dit is de gepubliceerde RFC 6238-testsleutel 12345678901234567890 in Base32. De pagina toont de huidige zescijferige code en het aantal seconden tot de volgende; dit is dezelfde code die een authenticator-app voor dit geheim weergeeft. Bij overschakeling naar HOTP met teller 0 wordt 755224 weergegeven, de eerste RFC 4226-testwaarde.

Wat er wordt gecontroleerd

SignaalWat dit betekent
De codeHMAC van de tijdstap (TOTP) of de teller (HOTP), ingekort tot 6 of 8 cijfers zoals beschreven in RFC 4226 en RFC 6238. Deze komt alleen overeen met een app als het type, het algoritme en het aantal cijfers hetzelfde zijn.
Vernieuwing in ns · tijdstap NHet aantal seconden dat nog resteert in het huidige venster van 30 seconden en het stapnummer, afgeleid van de klok van je apparaat. Als de klok niet goed loopt, wordt de vorige of volgende code weergegeven.
Teller N · druk op VolgendeIn de HOTP-modus hoort de code bij die teller. Elke code wordt één keer gebruikt; daarna verwachten de servers de volgende teller.
Niet Base32: ...Het wachtwoord bevat tekens die niet tot de reeksen A–Z en 2–7 behoren, zoals 0, 1, 8 of 9. Spaties, koppeltekens en het teken = worden genegeerd en kleine letters worden geaccepteerd.
het geheim bestaat uit slechts N bitsDe geheime sleutel is korter dan de 128 bits (26 Base32-tekens) die RFC 4226 voorschrijft. De codes worden nog steeds weergegeven, maar zo’n geheime sleutel is gemakkelijker te raden.
Geldig: komt overeen met ...Controleer of de code voor de huidige tijdstap of de HOTP-teller in het veld is gevonden.
Geldt voor de vorige of de volgende stapDe code hoort bij één stap van 30 seconden vóór of na het huidige tijdstip (weergegeven in oranje). Meestal is er een klein tijdsverschil tussen de twee apparaten.
Geen overeenkomstNoch de gecontroleerde tijdstappen, noch de tellers kloppen. Controleer het geheim, de klok, het algoritme en het aantal cijfers.

Nog meer voorbeelden

RFC 4226-testsleutel, HOTP

Invoer
GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ
Resultaat

Met codetype HOTP, HMAC-SHA-1, 6 cijfers en teller 0 is de code 755224; ‘Next’ levert 287082 op voor teller 1, de gepubliceerde testwaarden uit RFC 4226.

Controleer of de code één teller verder ligt

Invoer
GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ
Resultaat

In de HOTP-modus met teller 0 levert het invoeren van 287082 in het veld ‘Een code verifiëren’ het volgende resultaat op: ‘Geldig voor teller 1’, 1 hoger dan het tellerveld.

Geen Base32-geheim

Invoer
0189
Resultaat

FOUT met de melding Niet Base32: „0”, „1”, „8”, „9”, omdat Base32 alleen de letters A–Z en de cijfers 2–7 gebruikt.

Veelgestelde vragen

Wat berekent het precies?

TOTP-codes vanaf het huidige tijdstip in stappen van 30 seconden (RFC 6238) of HOTP-codes voor een door jou ingestelde teller (RFC 4226), met HMAC-SHA-1, SHA-256 of SHA-512 en 6 of 8 cijfers; de meeste authenticator-apps gebruiken SHA-1 en 6 cijfers. Controleer of een code de huidige tijdstap en één stap in beide richtingen probeert, of de HOTP-teller en de volgende 9; een geheim met tekens buiten A-Z en 2-7 wordt afgewezen met een melding.

Beschermt een TOTP-code mij tegen phishing?

Niet helemaal. Bij phishing-kits van het type ‘adversary-in-the-middle’ wordt de code tijdens het typen doorgegeven aan de echte website, waardoor deze samen met het wachtwoord wordt vastgelegd; passkeys en FIDO2-beveiligingssleutels zijn hiertegen bestand omdat ze aan het echte domein zijn gekoppeld.

Wordt het geheim ergens verzonden of opgeslagen?

Nee. De codes worden in je browser berekend met behulp van de Web Crypto API en het geheim wordt nooit geüpload of opgeslagen. TOTP is afhankelijk van de klok van je apparaat, dus als de klok niet goed loopt, krijg je andere codes.

Hoe kan ik de codes toetsen aan de RFC’s?

Gebruik de testcode 12345678901234567890, in Base32: GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ. In de HOTP-modus geeft teller 0 de waarde 755224 en teller 1 de waarde 287082 (RFC 4226). RFC 6238 vermeldt 94287082 voor 8 cijfers op 59 seconden na 1 januari 1970 UTC; de TOTP-modus gebruikt altijd de huidige tijd.

Wat is het verschil tussen TOTP en HOTP?

HOTP (RFC 4226) telt het aantal keren dat een code wordt gebruikt: elke code hoort bij een teller die met één wordt verhoogd. TOTP (RFC 6238) is HOTP waarbij de teller is ingesteld op de huidige tijdsstap van 30 seconden, zodat de code met de klok mee verandert.

Waarom geeft mijn app een andere code weer?

Controleer eerst de klokken, want een verschil van 30 seconden verandert de code. Controleer vervolgens of de code geen typefouten bevat en of het account gebruikmaakt van SHA-256, SHA-512, 8 cijfers of een teller in plaats van tijd, en stel hier dezelfde opties in.

Moet ik hier een echt 2FA-wachtwoord invoeren?

Vermijd dit. Het geheim blijft in je browser opgeslagen, maar iedereen die het ziet of kopieert, kan je codes genereren totdat je de tweefactorauthenticatie voor dat account opnieuw instelt. Gebruik de eigen overdrachts- of resetoptie van het account om de tweefactorauthenticatie naar een nieuwe telefoon over te zetten.

Uitleg van termen

Onderzoek van PhishDestroy