Base64 est une représentation d'octets utilisant un alphabet de texte restreint. C'est utile lorsqu'un transport accepte du texte mais que la charge utile est binaire. L'opération est réversible : un décodeur correct récupère les octets d'origine, y compris les zéros et les valeurs qui ne sont pas des caractères valides. Choisir comment interpréter ces octets est une étape distincte.
Trois octets deviennent quatre caractères
Un octet contient huit bits. Trois octets fournissent 24 bits, répartis en quatre groupes de six. Chaque groupe sélectionne l’un des 64 caractères de l’alphabet. L’alphabet standard comprend des lettres majuscules et minuscules, des chiffres, le signe plus (+) et la barre oblique (/). Pour le texte ASCII Man, les octets sont 4d 61 6e en hexadécimal, et la sortie codée est TWFu.
Input bytes: 01001101 01100001 01101110
Six-bit sets: 010011 010110 000101 101110
Indexes: 19 22 5 46
Output: T W F u
Le remplissage décrit le groupe final
Lorsqu'il reste un octet, la sortie comporte deux caractères alphabétiques et deux signes égal. Les deux octets restants produisent trois caractères alphabétiques et un signe égal. Ainsi M devient TQ==, tandis que Ma devient TWE=. Le remplissage fait partie de la structure ; ajouter des signes égal au hasard ne permet pas de récupérer un caractère manquant dans les données encodées. Les bits inutilisés du dernier caractère de l’alphabet doivent également être nuls pour obtenir un encodage canonique.
Pour n octets d'entrée, la sortie complétée a 4 × ceil(n / 3) caractères. Un fichier de 1 024 octets produit donc 1 368 caractères avant l’ajout d’un préfixe Data URI ou de sauts de ligne. Base64 n’est pas une compression, même si une couche de compression distincte lors du transport peut réduire la taille finale du transfert.
Valider avant d'interpréter
Utilisez le mode strict lorsque vous testez un producteur par rapport à un protocole défini. Utilisez le mode de compatibilité lorsqu'une source connue a inséré des sauts de ligne ASCII, omis un remplissage ou inclus un wrapper Data URI. Passez en revue les ajustements enregistrés. Les ponctuations inattendues, les alphabets mixtes et les bits inutilisés différents de zéro méritent une enquête et non une suppression silencieuse.
Enfin, inspectez les octets décodés. Un Base64 valide peut contenir une séquence UTF-8 non valide, une image tronquée ou un PDF incomplet. Un décodage réussi ne prouve que la couche de codage. Enregistrez les résultats binaires sous forme d'octets et utilisez l'analyseur de fichiers approprié pour vérifier leur structure. Les règles d'alphabet, de remplissage et de bits canoniques sont spécifiées dans RFC 4648.