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.
Options avancées
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
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
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
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.
secret + SHA-1/6 digits // but server expects SHA-256/8
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.
system clock 90s fast // code is two steps ahead
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.
secret: "JBSW 0NE8" // contains 0 and 8
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 ?
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 ?
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 ?
Quelle est la différence entre TOTP et HOTP ?
Puis-je utiliser des codes à 8 chiffres ou SHA-256 / SHA-512 ?
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 ?
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. Outils connexes
Voir tous les outils →Générateur et vérificateur de hachage Bcrypt
Outils de sécurité
Générez et vérifiez des hachages bcrypt en ligne — coût ajustable, préfixes $2b$/$2a$/$2y$. 100 % dans votre navigateur ; mot de passe jamais envoyé.
Décodeur JWT
Outils de sécurité
Décodez des jetons JWT en ligne avec notre décodeur JWT gratuit. Inspectez en-tête, charge utile, signature, expiration et revendications. 100 % navigateur — votre jeton ne quitte jamais votre appareil. Sans inscription ni suivi.
Encodeur & Générateur JWT
Outils de sécurité
Générateur & encodeur JWT gratuit en ligne. Construisez l'en-tête et la charge utile, signez avec HS256, RS256 ou ES256 instantanément. 100 % navigateur — votre secret et votre clé ne quittent jamais votre appareil.
Générateur de secret JWT gratuit — HS256/384/512
Outils de sécurité
Générez un secret JWT robuste pour HS256/384/512 — 100 % dans votre navigateur, jamais envoyé. base64url, base64 ou hex ; à copier pour .env.
Générateur de Hash MD5 en Ligne et Vérificateur de Checksum
Outils de sécurité
Générez des hashes MD5, SHA-256, SHA-1 et SHA-512 dans votre navigateur. Hachez texte ou fichiers, vérifiez les checksums en un clic. 100 % privé.
Générateur de Mot de Passe — Sécurisé & Personnalisable
Outils de sécurité
Générez des mots de passe forts et sécurisés — gratuit, 100 % dans votre navigateur. Personnalisez longueur et caractères, générez jusqu'à 50.