Partir du format attendu
Commencez par le format imposé par le système destinataire, non par celui qui semble le plus court. Le Base64 standard emploie lettres, chiffres, signe plus et barre oblique; certains usages exigent la variante Base64URL. Le Base32 utilise des capitales et les chiffres de 2 à 7. Le Base58 de type Bitcoin retire des caractères que l'on confond facilement lors d'une copie manuelle, notamment zéro, O majuscule, I majuscule et l minuscule. Ces alphabets peuvent représenter les mêmes octets, mais un destinataire conçu pour l'un n'acceptera pas automatiquement les autres. Aucun ne chiffre le message: le décodeur approprié restitue les octets d'origine.
Un exemple commun aux trois
Prenez le texte ASCII Man. Ses octets UTF-8 sont 4D 61 6E en hexadécimal. Le Base64 standard les écrit TWFu. Le Base32 défini par la RFC 4648 les écrit JVQW4===, avec un remplissage complétant le bloc de huit caractères. L'outil Base58 lié représente ces octets avec l'alphabet Bitcoin, sans signes égal de remplissage. Les chaînes diffèrent car les alphabets découpent le flux de bits ou l'entier de façon distincte; le texte reste identique. Saisissez Man dans le codeur Base32 intégré, puis utilisez son décodeur. Testez ensuite Base64 et Base58 avec la même entrée et comparez après décodage.
- UTF-8 : Man → 4D 61 6E
- Base64 : TWFu · Base32 : JVQW4===
- Base58 : autre alphabet; décoder pour retrouver Man
Remplissage, variantes et contrôle
Les spécifications Base64 et Base32 décrivent le remplissage par des signes égal. Certains protocoles l'omettent volontairement, d'autres l'exigent; suivez la règle du destinataire. Ici, Base58 ne comporte pas ce remplissage. Il faut aussi séparer le simple encodage Base58 du Base58Check de Bitcoin: une adresse inclut une version et une somme de contrôle avant sa représentation Base58. Le convertisseur MultiVerto encode du texte UTF-8; il ne fabrique pas une adresse Bitcoin et ne vérifie pas la somme Base58Check. La variante Base64URL change également des caractères importants pour les URL. Une variante inadéquate peut échouer malgré des octets de départ corrects.
Comparer les octets plutôt que les lettres
Un texte devient d'abord des octets selon un codage de caractères. MultiVerto utilise UTF-8 dans ses outils Base32 et Base58, et une lettre accentuée peut donc occuper plusieurs octets. Pour estimer la taille, comptez les octets, non les signes visibles. Un espace supplémentaire dans la source modifie lui aussi le résultat. Si deux chaînes divergent, notez le texte initial, les octets UTF-8, l'alphabet nommé, la règle de remplissage et le décodeur attendu. Décodez chaque résultat et comparez le texte reconstruit. Pour transporter un fichier binaire arbitraire, vérifiez que le système conserve directement ses octets: un convertisseur de texte ne suffit pas toujours.
Respecter le contrat de transmission
Pour un champ MIME, un jeton d'API, un code QR ou un identifiant recopié à la main, lisez la spécification concernée avant de choisir. Base64 est courant dans les échanges entre logiciels; Base32 peut convenir à un alphabet restreint; Base58 apparaît dans des systèmes qui limitent les confusions visuelles. Ce sont des tendances et non des règles universelles. Un encodage n'apporte à lui seul ni intégrité ni authenticité: le format extérieur doit prévoir une somme, une signature ou une protection authentifiée si cela compte. Conservez un petit vecteur de test tel que Man et vérifiez le trajet aller et retour à la frontière entre applications.