Informatique
Convertisseur Base64 : texte, entiers, hexadécimal et binaire
Saisis une valeur dans l'un des cinq formats et obtiens aussitôt tous les autres : la chaîne Base64, le texte, les octets en hexadécimal et en binaire, et l'entier qu'ils représentent. En dessous, tu vois comment naissent les caractères, six bits à la fois.
Ce qu'est Base64 et quand on l'utilise
Base64 est une façon d'écrire des octets quelconques avec seulement 64 caractères sûrs : les lettres majuscules et minuscules, les chiffres, le plus et la barre oblique. On en a besoin quand des données binaires doivent passer par un canal prévu pour du texte : pièces jointes des e-mails, images intégrées à une page en data URI, clés et certificats dans les fichiers PEM, jetons JWT.
Le principe est simple : on prend trois octets, soit 24 bits, et on les divise en quatre groupes de six. Six bits valent de 0 à 63, et chaque valeur correspond à un caractère. Quand il reste un ou deux octets à la fin, on les complète par des zéros et le signe = indique combien de caractères ne portent pas de données. C'est pourquoi une chaîne Base64 est toujours environ un tiers plus longue que les données d'origine.
Base64 n'est pas un chiffrement : n'importe qui peut le décoder sans clé. Il convertit, il ne protège pas. La variante URL-safe remplace + et / par - et _, car les deux premiers ont un sens dans les adresses web, et omet souvent le remplissage.
Erreurs fréquentes
- Prendre Base64 pour un moyen de cacher un mot de passe : c'est un encodage que tout le monde peut inverser, sans aucune sécurité.
- Décoder en texte des données qui n'en sont pas : une image ou une clé en Base64 donnent des octets qui ne forment pas de l'UTF-8 valide, et c'est normal.
- Mélanger les deux alphabets : une chaîne URL-safe avec - et _ passée à un décodeur standard est refusée, ou mal lue si le décodeur ignore les caractères inconnus.
Questions fréquentes
Pourquoi une chaîne Base64 se termine-t-elle par un ou deux signes = ?
Parce que les données n'étaient pas un multiple de trois octets. Un octet restant donne deux caractères et deux =, deux octets donnent trois caractères et un =. Le remplissage indique au décodeur combien d'octets reconstruire ; beaucoup de décodeurs, dont celui-ci, l'acceptent même absent.
De combien un fichier s'allonge-t-il en Base64 ?
Chaque groupe de trois octets devient quatre caractères, soit environ 33 % de plus, arrondi au multiple de quatre. Une image de 30 ko devient une chaîne d'environ 40 ko.
Que signifie l'entier big-endian ?
Les octets sont lus comme un seul nombre, le premier octet étant le chiffre le plus significatif en base 256. Les octets 01 00 valent 256. C'est le même ordre que dans les protocoles réseau et dans les grands nombres de la cryptographie.
Pourquoi le texte décodé affiche-t-il des caractères bizarres ou rien du tout ?
Parce que les octets ne sont pas du texte UTF-8 : ce peut être une image, un fichier compressé ou un texte dans un autre encodage comme Latin-1. Dans ce cas, c'est l'hexadécimal qui compte, car il montre les octets tels qu'ils sont.
Comment fonctionne ce calcul
Chaque groupe de trois octets b₁ b₂ b₃ forme le nombre N = b₁·65536 + b₂·256 + b₃. Les quatre caractères sont les positions ⌊N / 262144⌋, ⌊N / 4096⌋ mod 64, ⌊N / 64⌋ mod 64 et N mod 64 dans l'alphabet ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/. Le décodage fait le chemin inverse. L'entier est la somme des octets pondérés par 256 élevé à leur position comptée depuis la droite.
Calculs liés
Conversion de bases
Binaire, octal, décimal, hexadécimal et complément à deux.
Algèbre de Boole
Table de vérité d'une expression logique avec AND, OR, NOT et XOR.
Virgule flottante IEEE 754
Comment un décimal est stocké en float 32 ou 64 bits : signe, exposant, mantisse et erreur.
Codes Unicode et UTF-8
Le point de code, les octets UTF-8 et UTF-16 et le code HTML de chaque caractère, emoji compris.