Encodeur et décodeur Base32
Encodez du texte en Base32 RFC 4648, l'alphabet A–Z et 2–7 des secrets d'authentification : Hello devient JBSWY3DP. Le décodage accepte les minuscules et les retours à la ligne, mais refuse tout symbole étranger. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Texte
- Hello
- Mode de calcul
- Encode
- Résultat
- JBSWY3DP
- Longueur
- 8
- Octets d'entrée
- 5
- Alphabet utilisé
- RFC4648
Base32 transforme un texte UTF-8 quelconque en une chaîne compacte composée uniquement des lettres A à Z et des chiffres deux à sept, avec un remplissage facultatif en signes égal pour que chaque bloc s'aligne sur une limite de huit caractères. Contrairement à Base64, cet alphabet évite le plus, la barre oblique et les autres signes de ponctuation qui cassent les URL, les arguments de shell ou les systèmes de fichiers insensibles à la casse ; c'est pourquoi les graines secrètes, les clés TOTP et de nombreux jetons de protocole circulent encore en Base32. Cette capacité implémente l'alphabet de la section six de la RFC 4648 de bout en bout : le mode encode lit votre chaîne en octets UTF-8 et produit un résultat Base32 rempli ; le mode decode accepte un Base32 à casse mixte, supprime les espaces, valide chaque caractère et renvoie le texte UTF-8 d'origine.
Comment le Base32 de la RFC 4648 condense les bits en A-Z et 2-7
La section six de la RFC 4648 définit un alphabet de trente-deux symboles : les vingt-six lettres latines majuscules suivies des six chiffres deux à sept. L'encodage part d'octets bruts. Pour du texte, cette capacité convertit d'abord votre chaîne en UTF-8 afin que les caractères multi-octets restent portables entre langues et plateformes.
Ces octets sont ensuite lus comme un flux de bits continu. Chaque groupe de cinq bits sélectionne un index de l'alphabet, produisant un caractère Base32. Cinq octets d'entrée fournissent quarante bits, qui se divisent proprement en huit caractères Base32 ; les restes plus courts laissent un dernier quintet partiel, complété par des zéros à droite puis par un remplissage en signes égal pour que la longueur totale soit toujours un multiple de huit.
Le décodage inverse la correspondance : chaque caractère hors remplissage apporte cinq bits, les octets complets sont émis dès que huit bits s'accumulent, et le remplissage final est contrôlé pour vérifier sa position légale. Les espaces sont ignorés, ce qui permet de coller des jetons sur plusieurs lignes depuis un courriel. Les minuscules sont converties en majuscules avant la recherche.
Ce rejet strict est volontaire : un remplacement silencieux masquerait des erreurs de transcription dans les secrets d'authentification et les formats filaires.
Ce que vous envoyez et ce que vous recevez
Envoyez un champ chaîne obligatoire nommé text et un champ mode facultatif valant encode ou decode. Lorsque mode est omis, encode est la valeur par défaut, donc une charge utile minimale reste utile. Le mode encode traite text comme du contenu UTF-8 brut et renvoie une chaîne result dans l'alphabet RFC 4648 avec remplissage.
Le mode decode traite text comme du Base32, normalise la casse et les espaces, valide l'alphabet et renvoie la chaîne UTF-8 récupérée dans result. Dans les deux sens, la réponse renvoie mode, le text d'origine, result, un champ length pour la chaîne de sortie principale, les libellés alphabet et charset, un indicateur padding et une courte chaîne de référence standard afin que les clients puissent vérifier le profil appliqué. Les échecs de validation ne consomment pas de solde prépayé.
Les vérifications classiques consistent à encoder Hello en JBSWY3DP, la seule lettre f en MY avec six signes égal de remplissage, puis à décoder un bloc rempli connu pour retrouver foobar. Utilisez le formulaire gratuit du navigateur pour des contrôles rapides et des démonstrations en classe, puis appelez le même contrat depuis vos scripts lorsqu'il vous faut du matériel secret en masse ou des jeux de tests de non-régression.
Où l'encodage Base32 apparaît dans le travail réel
Les secrets de mots de passe à usage unique basés sur le temps, définis par la RFC 6238 et utilisés par les applications d'authentification, voyagent presque toujours en Base32 afin que les utilisateurs puissent les saisir sans confondre autant le zéro avec la lettre O ou le un avec la lettre I qu'avec Base64. Les QR de provisionnement et les codes de secours exigent donc un encodage fiable à la génération des clés et un décodage strict à leur importation.
Le DNS et certains systèmes de configuration réseau préfèrent des alphabets de type Base32 pour les étiquettes opaques qui doivent survivre au pliage de casse. Les liens profonds mobiles et les jetons hors ligne courts choisissent souvent Base32 car l'ensemble de symboles devient insensible à la casse après normalisation et évite les caractères réservés des URL. Les services d'assistance collent des secrets multilignes issus de tickets et ont besoin d'une tolérance aux espaces sans accepter de symboles invalides qui produiraient une mauvaise clé.
Les auteurs de cours sur les schémas d'encodage veulent une page dédiée à Base32 plutôt qu'un enterrement sous une landing générique Base64, car l'intention de recherche et les règles d'alphabet diffèrent. Si vous avez besoin de Base64 avec alphabet sûr pour URL, d'encodage-pourcent pour les URL ou de conversion d'entiers multi-bases, traitez-les comme des intentions de recherche et des landings distinctes plutôt que de surcharger cette page d'encodeur Base32.
Cas d’usage
Échange de secrets TOTP et d'authentificateurs
Encodez les secrets partagés nouvellement générés en Base32 RFC 4648 pour les applications d'authentification, ou décodez des graines Base32 collées lors d'une récupération ou d'une importation de compte.
Jetons sûrs pour la casse dans configurations et liens
Produisez des étiquettes Base32 qui survivent au pliage de casse et évitent la ponctuation + / lors de l'intégration d'identifiants opaques dans des noms de type DNS ou des liens profonds.
Questions fréquentes
Quel alphabet Base32 est utilisé ici ?
Celui de la section six de la RFC 4648 : majuscules A-Z et chiffres 2-7, avec remplissage « = » jusqu'à un multiple de huit caractères. Ce n'est ni Base32hex ni Crockford Base32.
Puis-je à la fois encoder et décoder ?
Oui. Réglez mode sur encode (valeur par défaut) pour transformer du texte UTF-8 brut en Base32, ou sur decode pour retrouver le texte à partir d'une chaîne Base32.
Que se passe-t-il si la chaîne Base32 contient un caractère invalide ?
Aucun montant n'est facturé pour les échecs de validation.
Le Base32 en minuscules est-il accepté au décodage ?
Oui. Les lettres sont converties en majuscules avant la recherche dans l'alphabet. Les espaces sont supprimés, donc les collages multilignes fonctionnent toujours.
Combien cela coûte-t-il ?
L'outil du navigateur est gratuit et s'exécute localement.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/enc/base32 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello"}'const res = await fetch("https://api.kit.forhosting.com/enc/base32", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/base32",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/base32", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/base32", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"text": "Hello"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.base32",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Un symbole illégal pendant le décodage échoue immédiatement avec invalid_input, de sorte qu'un copier-coller fautif ne corrompt jamais silencieusement les données.
Comment le Base32 de la RFC 4648 condense les bits en A-Z et 2-7
Tout caractère hors de A-Z, des chiffres deux à sept et du signe égal de remplissage déclenche une erreur invalid_input indiquant la position et le symbole fautif. L'ensemble du parcours est un calcul entier déterministe, sans virgule flottante, sans réseau, sans graine aléatoire ni horodatage, donc des entrées identiques produisent toujours un JSON identique. La norme implémentée ici est l'alphabet Base32 classique de la RFC 4648, ni Base32hex ni Crockford Base32, qui utilisent d'autres tables de symboles et rompraient l'interopérabilité avec TOTP et de nombreuses API historiques.
Ce que vous envoyez et ce que vous recevez
Encode rapporte aussi input_bytes ; decode rapporte output_bytes. Un text manquant, des objets non textuels, des valeurs de mode non prises en charge, des chaînes dépassant le maximum documenté, des caractères Base32 illégaux, un remplissage après un caractère de données, trop de signes de remplissage ou des longueurs non multiples de huit échouent tous avec invalid_input et un message clair en anglais. Le tarif des appels API réussis est la base publiée de $0.002 par élément.
Où l'encodage Base32 apparaît dans le travail réel
Comme cette capacité est un moteur de parse pur, le tarif API est la base publiée de $0.002 par élément réussi et une validation échouée ne consomme aucun solde.
Cas d'intégration
Vecteurs de test golden multilangages
Générez des jeux d'essai d'encodage et de décodage concordant avec Python, Go et OpenSSL Base32 afin qu'une CI multilangage partage une même vérité de référence.