Encodage

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Représentation de données binaires en texte
Schémas Base64, Base32, hexadécimal, URL
Outils base64, xxd, openssl
Voir aussi OpenSSL

L'encodage transforme des données binaires en une représentation textuelle imprimable (ASCII). Ce n'est pas du chiffrement : aucune clé n'intervient, l'opération est entièrement réversible par quiconque. On l'utilise pour transporter du binaire dans des canaux prévus pour du texte (courriel, JSON, URL) ou pour afficher lisiblement des données chiffrées.

Base64

Base64 représente 3 octets (24 bits) par 4 caractères ASCII pris dans un alphabet de 64 symboles, avec = comme remplissage. Il augmente la taille d'environ 33 %.

# Encoder / décoder (coreutils)
base64 fichier.bin > fichier.b64
base64 -d fichier.b64 > fichier.bin

# Chaîne courte
echo -n "message" | base64            # bWVzc2FnZQ==
echo -n "bWVzc2FnZQ==" | base64 -d

# Avec openssl
openssl base64 -in clair.txt -out clair.b64
openssl base64 -d -in clair.b64 -out clair.txt

Base64 URL-safe remplace + et / par - et _ (utilisé dans les JWT, les paramètres d'URL).

Hexadécimal

Chaque octet est représenté par deux chiffres hexadécimaux. Pratique pour inspecter du binaire ou afficher une empreinte.

# Vidage hexadécimal
xxd fichier.bin
hexdump -C fichier.bin

# Conversion texte <-> hex
echo -n "message" | xxd -p            # 6d657373616765
echo -n "6d657373616765" | xxd -r -p

# Empreinte en hexadécimal
openssl dgst -sha256 fichier.bin
sha256sum fichier.bin

Inspecter des données chiffrées

Après un chiffrement avec sel, l'en-tête et les octets ne sont pas imprimables. Pour n'en extraire que les fragments lisibles :

strings crypto.dat

Pour la liste des algorithmes de la sous-commande openssl enc et le chiffrement symétrique lui-même, voir OpenSSL.

Voir aussi