Base64
Base64 projette des données binaires arbitraires sur 64 caractères ASCII imprimables (A-Z, a-z, 0-9, +, /) afin que les données binaires puissent transiter par des canaux texte uniquement.
Objectif
Elle a résolu le problème des premiers systèmes de courrier ne transportant que du texte ASCII 7 bits et incapables d'acheminer des pièces jointes binaires, tout en évitant que les passerelles ne corrompent les caractères de contrôle.
Mécanisme
Le flux d'octets d'entrée est traité par groupes de 3 octets (24 bits) découpés en quatre unités de 6 bits, chacune projetée sur un caractère de l'alphabet Base64. Le dernier groupe incomplet est complété par = jusqu'à 4 caractères. La longueur encodée vaut environ 4/3 de l'entrée, et la longueur de sortie est toujours un multiple de 4.
Cas d’usage
- Intégration de données binaires dans JSON, XML et URL (p. ex. petites images en Data URLs)
- Transport de pièces jointes MIME dans les courriels
- Encodage d'utilisateur:motdepasse dans l'authentification HTTP Basic
- Encodage des segments d'en-tête et de charge utile d'un JWT
Exemples
- entrée
HelloOutputSGVsbG8=5 bytes to 8 characters with one trailing = pad
Erreurs courantes
- Using standard Base64 directly in URLs, where + and / get percent-encoded and decoding fails
- Use Base64URL instead (- and _ replace + and /, and = padding is dropped)