DevToolPal
FR

Générateur de codes TOTP / HOTP

Générez des codes d’authentification à deux facteurs (TOTP et HOTP) à partir d’un secret Base32 ou d’une URI otpauth://, avec SHA-1/256/512, 6 à 8 chiffres et un compte à rebours en direct.

Traitement local, rien n'est envoyé

Options

Type
Chiffres
Intervalle

Secret (Base32) ou URI otpauth://

Codes

Le résultat s'affiche ici

À quoi ça sert

Les applications de double authentification comme Google Authenticator, Microsoft Authenticator et 1Password affichent des codes à six chiffres qui changent toutes les 30 secondes. Chaque code est un mot de passe à usage unique calculé à partir d’un secret partagé : TOTP (RFC 6238) utilise l’heure et HOTP (RFC 4226) un compteur. Cet outil calcule les mêmes codes à partir du secret, pour tester une configuration 2FA, déboguer une implémentation serveur ou vérifier ce que devrait être un code.

Il affiche le code actuel avec un compte à rebours en direct, ainsi que les codes précédent et suivant, que les serveurs acceptent souvent pour couvrir de petits écarts d’horloge.

Mode d’emploi

  1. Collez le secret Base32 (lettres A–Z et chiffres 2–7 ; espaces et casse sans importance) ou une URI otpauth:// complète issue d’un QR code. Cliquez sur Exemple pour essayer.
  2. Choisissez TOTP ou HOTP, puis réglez l’algorithme, le nombre de chiffres et l’intervalle selon le compte. Les réglages d’une URI otpauth sont prioritaires.
  3. En HOTP, saisissez le compteur et utilisez Compteur +1 pour passer d’un code à l’autre.
  4. Copiez le code actuel. Le compte à rebours indique combien de temps il reste valide.

Exemple

Le secret de démonstration JBSWY3DPEHPK3PXP est la forme Base32 des octets « Hello! » suivis de 0xDEADBEEF. L’URI ci-dessous, telle qu’encodée dans un QR code, décrit un compte qui l’utilise avec les réglages par défaut :

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

Au temps Unix 1700000000, ce secret donne le code 324 550, et il reste 10 secondes dans la fenêtre.

Comment le code est calculé

Le secret est décodé de Base32 en octets. En TOTP, le compteur est le temps Unix en secondes divisé par l’intervalle, arrondi à l’entier inférieur. Le compteur est écrit sur 8 octets et signé avec HMAC à l’aide du secret. La troncature dynamique choisit 4 octets de la sortie HMAC d’après son dernier quartet, puis le nombre est réduit au nombre de chiffres demandé, en conservant les zéros de tête.

FAQ

› Pourquoi mon code ne correspond-il pas à celui de mon application d’authentification ?

Les codes TOTP dépendent de l’horloge : vérifiez d’abord que l’heure de votre appareil est réglée automatiquement. Vérifiez ensuite que l’algorithme, le nombre de chiffres et l’intervalle correspondent au compte. La plupart des services utilisent SHA-1, 6 chiffres et 30 secondes, et les applications d’authentification ignorent les autres réglages sauf si le QR code les précise.

› Quelle est la différence entre TOTP et HOTP ?

TOTP (RFC 6238) utilise comme compteur l’heure actuelle divisée par l’intervalle, donc le code change toutes les 30 secondes. HOTP (RFC 4226) utilise un compteur qui augmente de un à chaque code utilisé. Les deux passent le secret et le compteur dans HMAC et gardent les 6 à 8 derniers chiffres.

› Mon secret est-il enregistré ou envoyé quelque part ?

Non. Les codes sont calculés dans votre navigateur avec l’API Web Crypto. Le secret n’est pas enregistré, n’apparaît pas dans la barre d’adresse et n’est pas inclus dans les liens de partage ; un lien partagé ne contient que les réglages. Un secret 2FA donne néanmoins un accès complet au second facteur : ne collez que des secrets qui vous appartiennent.

› Puis-je m’en servir pour ajouter la double authentification à mon application ?

Oui. Cliquez sur Secret aléatoire pour créer un secret Base32 de 160 bits, placez-le dans une URI otpauth:// ou un QR code pour vos utilisateurs, puis comparez les codes produits par votre serveur avec ceux affichés ici. Les serveurs acceptent généralement aussi le code précédent et le suivant pour tolérer un décalage d’horloge.