Comment convertir du Base32 en Base64
- Collez le Base32 dans Entrée · Base32 (RFC 4648). Les espaces entre les groupes, les minuscules et l’absence de
=ne posent aucun problème. - Lisez le Base64 dans Sortie · Base64. Décochez Remplissage (=) sous la sortie si la cible ne veut pas de
=, ou réglez le Retour à la ligne pour les longues valeurs. - Copier la sortie. Base64 → Base32 (RFC 4648) dans le sélecteur de sens fait le chemin inverse, tout comme Base64 en Base32.
Exemples
| Base32 | Base64 | Remarque |
|---|---|---|
JBSWY3DPEHPK3PXP | SGVsbG8h3q2+7w== | La clé d’exemple de la documentation Key Uri Format de Google Authenticator, 10 octets |
jbsw y3dp ehpk 3pxp | SGVsbG8h3q2+7w== | La même clé, groupée comme l’affichent les applications |
GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ | MTIzNDU2Nzg5MDEyMzQ1Njc4OTA= | Le secret de test de la RFC 6238, 20 chiffres ASCII |
RBGA56K5GUXFZY3PQMYQKS3ACLQI2W6K | iEwO+V01Llzjb4MxBUtgEuCNW8o= | 20 octets d’apparence aléatoire |
MZXW6YQ | Zm9vYg== | Entrée sans remplissage ; la forme complète est MZXW6YQ= |
La première clé se décode en octets 48 65 6c 6c 6f 21 de ad be ef : le mot Hello! suivi de de ad be ef. C’est pourquoi son Base64 commence par SGVsbG8h, le Base64 de Hello!.
Pourquoi convertir un secret 2FA en Base64
La forme Base32 existe pour les humains : elle va dans les QR codes et les écrans de configuration et peut être tapée sur un téléphone. Le code et la configuration veulent généralement la clé brute, et Base64 est la manière courante de stocker des octets bruts dans du JSON, du YAML, des variables d’environnement et des bases de données. Cas typiques :
- Faire passer des comptes TOTP d’une liste exportée de liens
otpauth://vers un système qui stocke les secrets en Base64. - Transmettre la clé à une fonction ou une bibliothèque HMAC qui prend du Base64 ou des octets, par exemple pour vérifier des codes sur votre propre serveur.
- Comparer deux copies d’un secret. Des groupements, casses ou remplissages différents du même Base32 donnent tous une seule chaîne Base64 : une sortie identique signifie des clés identiques.
Un secret en Base64 est exactement aussi sensible que sa version Base32 : stockez-le là où vous stockeriez un mot de passe.
Base32 en Base64 en Python
b32decode de Python est strict sur la casse et le remplissage : normalisez donc d’abord la chaîne.
import base64
def b32_to_b64(secret):
s = secret.replace(" ", "").upper()
s += "=" * (-len(s) % 8)
return base64.b64encode(base64.b32decode(s)).decode()
b32_to_b64("jbsw y3dp ehpk 3pxp") # 'SGVsbG8h3q2+7w=='
Sans l’appel .upper(), Python lève binascii.Error: Non-base32 digit found ; sans la ligne de remplissage, Incorrect padding. Voir Base64 en Python pour le côté Base64.
Problèmes courants
- Erreur sur un
9,8,1ou0. Ces chiffres ne font pas partie du Base32 RFC 4648. La valeur est probablement en base32hex ou en Crockford ;91IMOR3F, par exemple, échoue ici à la position 1. Décodez-la dans le décodeur Base32 avec le bon alphabet dans De. - Erreur sur un
-. Certains sites affichent les clés coupées par des tirets. Retirez-les ; seuls les espaces sont ignorés. - Le Base64 est correct, mais le serveur rejette les codes. Vérifiez les autres paramètres : l’algorithme, le nombre de chiffres et la période doivent être identiques des deux côtés, et l’horloge du serveur doit être proche de celle du téléphone.
FAQ
Comment convertir une clé Google Authenticator en Base64 ?
Prenez la clé dans le paramètre secret= du lien otpauth:// (ou la clé texte affichée sous le QR code) et collez-la ici. JBSWY3DPEHPK3PXP devient SGVsbG8h3q2+7w==.
Pourquoi le Base64 est-il plus court que le Base32 ?
Base64 stocke 6 bits par caractère et Base32 en stocke 5 : les mêmes octets demandent donc moins de caractères en Base64. 20 octets font 32 caractères en Base32, mais 28 en Base64.
Puis-je convertir du base32hex ou du Crockford Base32 ici ?
Cette page ne lit que le Base32 RFC 4648. Ouvrez le décodeur Base32, réglez De sur Base32hex ou Crockford Base32 et Vers sur Base64.
Comment convertir du Base32 en Base64 en ligne de commande ?
Avec GNU coreutils : printf 'JBSWY3DPEHPK3PXP' | base32 -d | base64. L’entrée doit être en majuscules et sans espaces ; tr -d ' ' | tr a-z A-Z la nettoie d’abord.