Charger un fichier
  1. base64hub
  2. Autres bases
  3. Base64 en Base32

Base64 en Base32 pour les secrets TOTP

Collez un secret Base64 et obtenez les mêmes octets en Base32 RFC 4648, prêts pour une application d’authentification ou un lien otpauth://. Décochez le remplissage et le résultat peut aller directement dans le paramètre secret=.

Gratuit sans inscription, sans limites Local rien n'est envoyé Prêt pour TOTP Base32 sans remplissage pour les liens otpauth Mis à jour 27 oct. 2026
Entrée 0Octets 0 BSortie 0

Traité dans votre navigateur. Cette page ne peut envoyer vos données nulle part – comment le savons-nous

Comment convertir du Base64 en Base32

  1. Collez le Base64 dans Entrée · Base64. Les caractères URL-safe (-, _), un remplissage manquant et les sauts de ligne sont acceptés.
  2. Lisez le résultat dans Sortie · Base32 (RFC 4648).
  3. Pour un lien otpauth:// ou une application d’authentification, décochez Remplissage (=) sous la sortie.
  4. Cliquez sur Copier la sortie. Base32 (RFC 4648) → Base64 dans le sélecteur de sens convertit dans l’autre sens, tout comme la page Base32 en Base64.

Les octets intermédiaires ne changent pas. Une clé de 20 octets en entrée, une clé de 20 octets en sortie, comme le montre le compteur Octets sous l’outil.

Exemples

Base64Base32Octets
iEwO+V01Llzjb4MxBUtgEuCNW8o=RBGA56K5GUXFZY3PQMYQKS3ACLQI2W6K20
iEwO-V01Llzjb4MxBUtgEuCNW8oRBGA56K5GUXFZY3PQMYQKS3ACLQI2W6K20, entrée URL-safe sans remplissage
MTIzNDU2Nzg5MDEyMzQ1Njc4OTA=GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ20, le secret de test de la RFC 6238
SGVsbG8h3q2+7w==JBSWY3DPEHPK3PXP10

Les chaînes des premières lignes ne se ressemblent pas du tout, et c’est normal : Base64 utilise 6 bits par caractère et Base32 en utilise 5, les caractères ne s’alignent donc jamais.

L’erreur à éviter consiste à encoder les caractères Base64 comme du texte. Coller iEwO+V01Llzjb4MxBUtgEuCNW8o= dans un encodeur texte vers Base32 donne NFCXOTZLKYYDCTDM…, du Base32 valide qui représente les 28 caractères eux-mêmes. Les codes d’authentification qui en découlent ne correspondront jamais à ceux du serveur.

Configurer TOTP à partir d’un secret Base64

Le code serveur stocke souvent le secret partagé en Base64, ou le génère avec une commande comme celle-ci :

openssl rand -base64 20

Pour l’enregistrer dans une application d’authentification, convertissez-le ici, puis construisez l’URI de clé :

otpauth://totp/Example:alice@example.com?secret=RBGA56K5GUXFZY3PQMYQKS3ACLQI2W6K&issuer=Example

algorithm, digits et period peuvent être ajoutés en paramètres ; sans eux, les applications supposent SHA-1, 6 chiffres et 30 secondes. Transformez le lien en QR code avec n’importe quel outil QR local, ou laissez l’utilisateur saisir le secret Base32 à la main. Le secret correspond aux mêmes octets que ceux que votre serveur passe à HMAC : les codes concordent sans rien changer côté serveur.

S’il vous faut un nouveau secret plutôt qu’un secret existant, générez 20 octets aléatoires en Base64 avec le générateur de Base64 aléatoire (préréglage Personnalisé) et convertissez-les ici.

Longueurs pour les tailles de clé courantes

CléBase64Base32 sans remplissageBase32 avec =
10 octets (80 bits)161616
16 octets (128 bits)242632
20 octets (160 bits)283232
32 octets (256 bits)445256

Les tailles multiples de 5 octets, comme 10 et 20, donnent un Base32 sans aucun remplissage.

La même conversion en Python

import base64

secret_b64 = "iEwO+V01Llzjb4MxBUtgEuCNW8o="
base64.b32encode(base64.b64decode(secret_b64)).decode().rstrip("=")
# 'RBGA56K5GUXFZY3PQMYQKS3ACLQI2W6K'

Pour une entrée URL-safe, utilisez base64.urlsafe_b64decode, et ajoutez d’abord le remplissage = s’il a été supprimé. Plus de détails dans Base64 en Python.

FAQ

Pourquoi les applications d'authentification veulent-elles du Base32 et pas du Base64 ?

Le format d’URI de clé otpauth://, que les applications lisent dans les QR codes, définit le secret en Base32. Il doit aussi pouvoir être saisi à la main quand le QR code ne peut pas être scanné, et Base32 n’a ni +, ni /, ni mélange de casse sur lesquels se tromper.

Le secret Base32 doit-il avoir un remplissage = ?

Pas dans un lien otpauth:// : le format d’URI de clé indique que le remplissage doit être omis. Décochez Remplissage (=). Un secret de 20 octets fait 32 caractères et n’a de toute façon pas besoin de remplissage.

Quelle longueur doit avoir un secret TOTP ?

La RFC 4226 exige au moins 128 bits et recommande 160 bits, soit 20 octets : 28 caractères Base64 ou 32 caractères Base32.

Convertir un secret en Base32 présente-t-il un risque de sécurité ?

L’encodage n’ajoute aucune protection et n’en retire aucune : quiconque possède la chaîne, sous l’une ou l’autre forme, peut générer vos codes. Le risque, c’est l’endroit où vous la collez. Cette page la convertit dans le navigateur, et sa Content Security Policy bloque les requêtes réseau autres que le comptage des pages vues de Cloudflare.