Skip to content

Générateur de codes TOTP / 2FA

Générez un code TOTP/2FA depuis un secret Base32 — 100 % dans votre navigateur, votre secret ne quitte jamais l'appareil. Configuration QR + vérification.

Sans pistage Fonctionne dans le navigateur Gratuit
Calculé localement dans votre navigateur — votre secret ne quitte jamais votre appareil.
Options avancées
Code actuel
------
Prochain code: ------
Suit le comportement RFC 6238 / RFC 4226 avec une sortie recoupée avec les vecteurs de test publiés et une application d'authentification indépendante — Équipe Sécurité Go Tools · 12 juin 2026

Qu'est-ce qu'un générateur de codes TOTP / 2FA ?

Un générateur TOTP transforme un secret partagé en ce code à usage unique rotatif qui alimente l'authentification à deux facteurs. Le TOTP — Time-based One-Time Password, défini dans la RFC 6238 — prend un secret Base32 et l'heure actuelle, divise le temps en pas fixes (30 secondes par défaut) et exécute un HMAC sur le compteur de pas pour dériver un court code numérique. Comme votre application d'authentification et le serveur détiennent le même secret et lisent la même horloge, ils calculent le code identique sans jamais l'échanger sur le réseau. C'est tout l'intérêt de la 2FA : même si votre mot de passe fuit, un attaquant a encore besoin du code que seul votre secret peut produire à cet instant.

« L'algorithme TOTP est une variante basée sur le temps de l'algorithme HOTP... TOTP = HOTP(K, T), où T est un entier représentant le nombre de pas de temps entre l'heure initiale du compteur T0 et l'heure Unix actuelle. » — RFC 6238, Section 4

Cet outil accomplit trois tâches sur une seule page. Il génère un code en direct à partir de n'importe quel secret Base32, avec un compte à rebours et un aperçu du prochain code ; il configure un tout nouveau secret, en construisant l'URI otpauth:// et le QR code que vous scannez dans une application d'authentification ; et il vérifie un code par rapport à un secret avec une tolérance de ±1 pas de temps, correspondant à la façon dont les vrais serveurs acceptent un code qui vient de tourner. Tout cela passe par l'API Web Crypto native du navigateur, sans dépendances et sans appels réseau.

Les développeurs ont recours à un générateur TOTP en permanence : pour reproduire le code exact qu'affiche l'application d'un utilisateur lors du débogage d'une connexion 2FA, pour fabriquer un secret et un QR pour un nouveau compte, pour confirmer qu'une fenêtre de vérification côté serveur correspond à ce que vivent les utilisateurs, ou pour construire des fixtures déterministes pour les tests de bout en bout d'un flux à deux facteurs. Comme le secret est une clé à longue durée de vie — quiconque le possède peut générer tous les codes à venir — il doit être protégé comme un mot de passe. Associez cet outil à notre générateur de mots de passe aléatoires pour les mots de passe robustes et les codes de récupération qui accompagnent la 2FA, et au générateur de QR code lorsque vous avez besoin d'une image d'enregistrement autonome. Pour signer les JSON Web Tokens qui circulent souvent au-dessus d'une session authentifiée, voyez l'encodeur JWT.

// Generate a TOTP code in the browser with the Web Crypto API
// (SHA-1, 6 digits, 30s period — RFC 6238 defaults)
async function generateTotp(base32Secret, time = Date.now()) {
  // Decode the Base32 secret to raw bytes (A-Z, 2-7)
  const alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
  let bits = '';
  for (const c of base32Secret.replace(/=+$/, '').toUpperCase())
    bits += alpha.indexOf(c).toString(2).padStart(5, '0');
  const bytes = new Uint8Array(
    bits.match(/.{8}/g).map((b) => parseInt(b, 2)));

  // Counter = number of 30s steps since the Unix epoch (8-byte big-endian)
  const counter = Math.floor(time / 1000 / 30);
  const msg = new Uint8Array(8);
  let c = counter;
  for (let i = 7; i >= 0; i--) { msg[i] = c & 0xff; c = Math.floor(c / 256); }

  const key = await crypto.subtle.importKey(
    'raw', bytes, { name: 'HMAC', hash: 'SHA-1' }, false, ['sign']);
  const hmac = new Uint8Array(await crypto.subtle.sign('HMAC', key, msg));

  // Dynamic truncation (RFC 4226) -> 6-digit code
  const off = hmac[hmac.length - 1] & 0x0f;
  const bin = ((hmac[off] & 0x7f) << 24) | (hmac[off + 1] << 16) |
              (hmac[off + 2] << 8) | hmac[off + 3];
  return (bin % 1_000_000).toString().padStart(6, '0');
}

const code = await generateTotp('JBSWY3DPEHPK3PXP');
// -> a 6-digit code that rotates every 30 seconds

Fonctionnalités clés

Code en direct avec compte à rebours

Collez un secret Base32 et le code TOTP actuel apparaît instantanément avec un anneau de compte à rebours de 30 secondes et un aperçu du prochain code — sans bouton Générer, sans attente.

Configuration du secret et du QR

Générez un secret Base32 aléatoire, puis obtenez l'URI otpauth:// et un QR code à scanner directement dans Google Authenticator, Authy ou 1Password.

Vérificateur de code intégré

Contrôlez un code par rapport à un secret avec la même tolérance de ±1 pas de temps qu'utilisent les vrais serveurs, afin qu'un code qui vient de tourner soit encore validé.

Algorithme et chiffres configurables

Basculez entre SHA-1, SHA-256 et SHA-512, choisissez 6 ou 8 chiffres, et réglez une période de 30 s ou 60 s pour correspondre aux exigences de n'importe quel fournisseur.

Le secret ne quitte jamais votre navigateur

Chaque code est calculé localement via l'API Web Crypto native. Rien n'est téléversé, journalisé ou stocké — de façon vérifiable, même hors ligne.

Zéro dépendance

Construit uniquement sur l'API Web Crypto du navigateur — pas de bibliothèques tierces, pas de télémétrie et aucun appel réseau d'aucune sorte.

Exemples du générateur TOTP

TOTP standard à 6 chiffres (SHA-1, 30 s)

secret: JBSWY3DPEHPK3PXP
algorithm: SHA-1
digits: 6
period: 30s
Code: 282760  ·  expires in 30s

Le secret de test canonique de la RFC 6238 avec les réglages par défaut qu'utilisent toutes les applications grand public — SHA-1, 6 chiffres, une période de 30 secondes. Le code est basé sur le temps, donc la valeur exacte dépend de l'heure actuelle ; l'outil affiche un compte à rebours en direct et le prochain code.

TOTP d'entreprise à 8 chiffres (SHA-256)

secret: JBSWY3DPEHPK3PXP
algorithm: SHA-256
digits: 8
period: 30s
Code: 31094217  ·  expires in 30s

Certains systèmes d'entreprise et de haute sécurité émettent des codes à 8 chiffres signés avec SHA-256 au lieu du SHA-1 par défaut. Faites correspondre exactement l'algorithme, le nombre de chiffres et la période à ce qu'attend votre serveur, sinon le code généré ne sera pas validé.

URI de configuration otpauth:// pour les applications d'authentification

issuer: Acme
account: alice@example.com
secret: JBSWY3DPEHPK3PXP
otpauth://totp/Acme:alice@example.com?secret=JBSWY3DPEHPK3PXP&issuer=Acme&algorithm=SHA1&digits=6&period=30

L'outil construit une URI otpauth:// standard et la restitue sous forme de QR code. Scannez-le avec Google Authenticator, Authy ou 1Password — ou collez l'URI directement — pour enregistrer le secret sur votre appareil.

Comment utiliser le générateur TOTP

  1. 1

    Collez un secret Base32

    Dans l'onglet Générer, collez votre secret Base32 (par exemple JBSWY3DPEHPK3PXP). Le code TOTP actuel apparaît instantanément avec un compte à rebours de 30 secondes — sans bouton Générer.

  2. 2

    Ajustez les options avancées (facultatif)

    Ouvrez les options avancées pour changer l'algorithme (SHA-1/256/512), le nombre de chiffres (6 ou 8) ou la période (30 ou 60 s) afin de correspondre à ce que votre fournisseur a émis.

  3. 3

    Configurez ou vérifiez

    Utilisez l'onglet Configurer pour générer un secret et un QR pour une application d'authentification, ou l'onglet Vérifier pour contrôler un code par rapport à un secret avec une tolérance de ±1 pas de temps.

Erreurs courantes

Algorithme ou chiffres non concordants

Un secret émis pour SHA-256 ou 8 chiffres produit un code complètement différent sous les valeurs par défaut SHA-1 / 6 chiffres. Faites correspondre exactement les paramètres du fournisseur.

✗ Incorrect
secret + SHA-1/6 digits  // but server expects SHA-256/8
✓ Correct
algorithm: SHA-256, digits: 8  // match the otpauth:// URI

Dérive d'horloge

Si l'horloge de l'appareil est décalée de plus d'un pas de temps, le code ne sera pas validé. Synchronisez l'horloge du système avant de comparer les codes.

✗ Incorrect
system clock 90s fast  // code is two steps ahead
✓ Correct
enable NTP / automatic time  // code aligns with server

Secret Base32 invalide

Le Base32 n'utilise que A–Z et 2–7. Les espaces d'une clé imprimée ne posent pas de problème, mais un 0, un 1 ou un 8 n'est pas du Base32 valide et échouera au décodage.

✗ Incorrect
secret: "JBSW 0NE8"  // contains 0 and 8
✓ Correct
secret: "JBSWY3DPEHPK3PXP"  // valid Base32

Cas d'usage courants

Déboguer un flux de connexion 2FA
Reproduisez le code exact qu'affiche l'application d'authentification d'un utilisateur, afin de tracer pourquoi une connexion à deux facteurs est rejetée.
Enregistrer un nouveau compte
Générez un nouveau secret Base32 et un QR code, puis scannez-le dans Google Authenticator, Authy ou 1Password pour configurer la 2FA.
Valider la fenêtre de votre serveur
Vérifiez des codes par rapport à un secret pour confirmer que votre back-end accepte un code qui vient de tourner et rejette un code expiré.
Construire des fixtures de tests de bout en bout
Calculez des codes TOTP déterministes à partir d'un secret connu pour piloter des tests automatisés d'un flux d'authentification à deux facteurs.
Faire correspondre des réglages d'entreprise
Reproduisez des codes à 8 chiffres ou SHA-256 lorsqu'un fournisseur s'écarte des valeurs par défaut SHA-1 / 6 chiffres, pour déboguer une discordance.
Récupérer rapidement l'accès
Générez le code actuel à partir d'un secret sauvegardé lorsque votre téléphone est indisponible — en utilisant une copie jetable du secret.

Détails techniques

Conforme à la RFC 6238 / RFC 4226
Implémente le TOTP selon la RFC 6238 au-dessus de l'algorithme de troncature dynamique HOTP de la RFC 4226, avec SHA-1, SHA-256 et SHA-512 sélectionnables.
HMAC Web Crypto natif
Les codes sont dérivés via un HMAC crypto.subtle sur le compteur de pas de temps en big-endian. Le décodage Base32 et la troncature s'exécutent entièrement dans le navigateur.
URI otpauth:// standard, zéro dépendance
Les URI de configuration suivent le Key Uri Format (otpauth://totp) avec les paramètres émetteur, algorithme, chiffres et période. Aucune bibliothèque externe, aucun appel réseau.

Bonnes pratiques

Traitez le secret comme un mot de passe
Quiconque possède le secret Base32 peut générer tous les codes à venir. Stockez-le dans un gestionnaire de secrets, jamais dans le contrôle de version, et privilégiez ici des secrets de test.
Gardez les horloges synchronisées
Le TOTP dépend d'une heure exacte. Activez la synchronisation horaire réseau sur les serveurs et les appareils pour que les codes s'alignent dans la fenêtre de vérification.
Tenez-vous-en aux valeurs par défaut sauf nécessité
SHA-1, 6 chiffres et une période de 30 secondes maximisent la compatibilité des applications. Ne passez à 8 chiffres ou SHA-256/512 que lorsque votre fournisseur l'impose.

FAQ du générateur TOTP / 2FA

Un générateur TOTP / 2FA en ligne est-il sûr à utiliser ?
Avec celui-ci, oui — et la raison est que rien ne quitte jamais votre navigateur. Le secret Base32 que vous saisissez, l'URI otpauth:// et le code généré sont tous calculés localement avec l'API Web Crypto native. Il n'y a aucune requête réseau, aucune journalisation, aucun stockage et aucune analyse liée à votre saisie — vous pouvez le vérifier en vous déconnectant d'Internet et en observant l'outil continuer à fonctionner. C'est l'inverse d'un générateur douteux qui envoie votre secret par POST à un serveur, où l'opérateur pourrait fabriquer vos codes indéfiniment. Un secret TOTP est une clé partagée à longue durée de vie, donc l'habitude la plus sûre reste de privilégier des secrets jetables ou de test lorsque vous voulez simplement expérimenter.
Qu'est-ce que le TOTP et qu'est-ce qu'un secret Base32 ?
TOTP (Time-based One-Time Password, mot de passe à usage unique basé sur le temps, défini dans la RFC 6238) est l'algorithme derrière les codes rotatifs à 6 chiffres des applications d'authentification. Il combine un secret partagé avec l'heure actuelle, divisée en pas fixes (généralement 30 secondes), au travers d'un HMAC pour produire un code court que votre appareil et le serveur peuvent calculer indépendamment. Le secret est la clé partagée, et il est presque toujours écrit en Base32 — les lettres majuscules A–Z et les chiffres 2–7 — car cet alphabet est insensible à la casse et facile à saisir ou à encoder dans un QR code. La chaîne JBSWY3DPEHPK3PXP est le célèbre secret de test de la RFC.
Pourquoi le code généré diffère-t-il de celui de l'application d'authentification de mon téléphone ?
Quatre éléments doivent correspondre pour que deux codes TOTP concordent. Premièrement, l'horloge : le TOTP dépend de l'heure actuelle, donc si l'horloge de votre ordinateur ou de votre téléphone est décalée de plus d'un pas, les codes divergent — synchronisez l'horloge de votre système et réessayez. Deuxièmement, l'algorithme : cet outil utilise SHA-1 par défaut (ce qu'emploient la plupart des applications), mais si votre secret a été émis pour SHA-256 ou SHA-512, vous devez le sélectionner ici aussi. Troisièmement, les chiffres et la période : 6 contre 8 chiffres, ou une fenêtre de 30 s contre 60 s, produisent des codes entièrement différents. Quatrièmement, le secret lui-même — un seul caractère Base32 mal saisi change chaque code. Alignez les quatre et les codes correspondront.
Quelle est la différence entre TOTP et HOTP ?
Les deux proviennent de la même famille de mots de passe à usage unique basés sur HMAC, mais ils diffèrent par ce qui pilote le code. HOTP (RFC 4226) est basé sur un compteur : chaque code est lié à un compteur qui s'incrémente, donc un code reste valide jusqu'à ce qu'il soit utilisé et que le compteur avance. TOTP (RFC 6238) est basé sur le temps : il remplace le compteur par l'heure actuelle divisée en pas fixes, de sorte que les codes tournent automatiquement toutes les 30 secondes. Le TOTP n'est en réalité que du HOTP avec le compteur réglé sur le nombre de pas de temps écoulés depuis l'epoch Unix. Cet outil génère du TOTP, ce qu'utilisent Google Authenticator, Authy et 1Password par défaut.
Puis-je utiliser des codes à 8 chiffres ou SHA-256 / SHA-512 ?
Oui. Ouvrez les options avancées pour basculer l'algorithme sur SHA-256 ou SHA-512, régler les chiffres sur 8 ou changer la période à 60 secondes. Ces réglages existent parce que certains systèmes d'entreprise et bancaires exigent des codes plus longs ou des hachages plus forts. Cela dit, l'écrasante majorité des services — et toutes les applications d'authentification grand public — utilisent les valeurs par défaut de SHA-1, 6 chiffres et une période de 30 secondes, alors laissez-les telles quelles à moins que les instructions de configuration de votre fournisseur n'indiquent le contraire. Quel que soit votre choix, l'URI otpauth:// que l'outil génère consigne ces paramètres pour que votre application enregistre le secret correctement.
Comment ajouter ce secret à Google Authenticator, Authy ou 1Password ?
Passez à l'onglet Configurer pour générer (ou coller) un secret, puis soit scannez le QR code, soit copiez l'URI otpauth://. Dans Google Authenticator ou Authy, appuyez sur le bouton d'ajout et choisissez Scanner un QR code pour pointer votre caméra vers le QR à l'écran, ou choisissez Saisir une clé de configuration et collez le secret Base32 avec le nom de compte et l'algorithme correspondants. Dans 1Password, modifiez un identifiant, ajoutez un champ Mot de passe à usage unique et collez l'URI otpauth:// directement. Besoin d'une image QR autonome pour la documentation ? Utilisez notre générateur de QR code, et pour les secrets aléatoires et les codes de récupération qui l'accompagnent, le générateur de mots de passe aléatoires.