Encodage
| 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
- OpenSSL — chiffrement, empreintes et conversions
- Cryptographie symétrique — Portail