L’encodage est le processus utilisé pour convertir les données dans un format requis pour une transmission ou un stockage efficace. En revanche, le décodage est opposé à la méthode d’encodage qui reconvertit les données encodées dans leur format d’origine. Base64 est le processus d’encodage où les données binaires sont converties en ASCII. Le codage Base64 est surtout nécessaire pour éviter les problèmes de transmission qui se produisent lorsque des données binaires sont transmises à des systèmes textuels qui ne peuvent pas traiter les données binaires correctement. En conséquence, les informations sont perdues ou corrompues pendant la transmission.
Certaines des utilisations de l’encodage sont :
- Compression de données
- Cachage de données
- Transmission de données dans un autre format
Pour encoder les données, Base64 utilise uniquement l’alphabet, le nombre et le symbole =. Par exemple, c2FtcGxlCg== est une donnée codée valide alors que b?HV3.Zh2J== n’est pas une donnée codée valide.
Dans cet article, nous allons expliquer comment utiliser la commande base64 pour coder et décoder les données dans une chaîne ou un fichier.
Nous avons exécuté les commandes sur le système Ubuntu 20.04 Focal Fossa. Cependant, vous pouvez également exécuter les mêmes commandes sur d’autres distributions Linux. Pour exécuter les commandes, nous avons utilisé l’application Terminal en ligne de commande, qui est accessible à l’aide du raccourci clavier Ctrl+Alt+T.
Syntaxe Base64
Voici la syntaxe pour coder en utilisant Base64:
Options
Certaines des options de la ligne de commande qui peuvent être utilisées avec la commande base64 sont :
Utiliser cette option pour décoder un fichier ou une chaîne de caractères.
Utilisez cette option pour afficher une aide concernant l’utilisation de base64.
Utiliser cette option pendant le décodage pour ignorer les caractères non alphabétiques
Utiliser cette option pour afficher les informations de version
Encodage de la chaîne
Vous pouvez facilement encoder une chaîne en utilisant la commande base64. Par exemple, pour encoder un exemple de texte « Welcome to Linux » en base64, la commande serait :
Cette commande codera le texte de la chaîne de caractères en utilisant base64 et imprimera le texte codé sur la sortie standard comme indiqué dans la capture d’écran suivante
Vous pouvez également enregistrer la sortie codée dans un fichier plutôt que de l’imprimer sur la sortie standard en utilisant l’opérateur de redirection (>). La commande suivante codera le texte et enregistrera la sortie dans un fichier nommé « encodedfile.txt:
Pour visualiser le fichier encodé, vous pouvez utiliser la commande cat:
Décodage de la chaîne
Vous pouvez également décoder le texte encodé en base64 en utilisant l’option -decode ou -d. Par exemple, pour décoder le texte codé en base64 « V2VsY29tZSB0byBMaW51eAo= », la commande serait :
Cette commande décodera le texte codé en base64 et imprimera le texte original sur la sortie standard comme le montre la capture d’écran suivante.
Vous pouvez également enregistrer la sortie décodée dans un fichier plutôt que de l’imprimer sur la sortie standard en utilisant l’opérateur de redirection (>). La commande suivante décodera le texte codé et enregistrera le texte original dans un fichier nommé « decodedfile.txt:
Encodage de fichier texte
La commande base64 peut également être utilisée pour encoder un fichier texte. Par exemple, pour coder un fichier texte nommé « testfile.txt », la commande serait :
Cette commande codera le fichier texte spécifié et imprimera sa forme codée sur la sortie standard comme le montre la capture d’écran suivante.
Vous pouvez également enregistrer la sortie codée dans un fichier plutôt que de l’imprimer sur la sortie standard en utilisant l’opérateur de redirection (>). La commande suivante convertira le texte du fichier en utilisant base64 et enregistrera la sortie dans un autre fichier nommé « encodedfile.txt:
Pour visualiser le fichier encodé, vous pouvez utiliser la commande cat:
Décodage du fichier texte
Pour décoder un fichier texte encodé, utilisez l’option -decode ou -d. Par exemple, pour décoder le fichier texte codé en base64 « fichiercodé.txt », la commande serait :
Cette commande décodera le fichier texte codé en base64 et imprimera le texte original sur la sortie standard comme le montre la capture d’écran suivante.
Vous pouvez également enregistrer la sortie décodée dans un fichier plutôt que de l’imprimer sur la sortie standard en utilisant l’opérateur de redirection (>). La commande suivante décodera le texte encodé et enregistrera le texte original dans un fichier nommé « decodedfile.txt qui pourra être visualisé plus tard à l’aide de la commande cat.
Encodage de l’entrée de l’utilisateur
En utilisant l’encodage base64, nous pouvons encoder n’importe quelles données fournies par l’utilisateur. À cette fin, nous devrons créer un script qui prendra l’entrée de l’utilisateur, l’encodera en utilisant l’encodage base64, et imprimera les données encodées sur la sortie standard.
Créer un script « test.sh » avec le code suivant:
# Imprimer le message pour demander l’entrée
echo « Provide Some data to encode »
# Enregistrer l’entrée dans une variable nommée « data »
read data
# Encoder en utilisant l’encodage base64 et enregistrer la sortie dans une variable « encod_data »
encod_data=`echo -n $data | base64`
# Imprimer la sortie encodée
echo « Encoded text is : $encod_data »
Exécutez le script comme suit :
Après avoir exécuté le script, il vous sera demandé de saisir les données que vous souhaitez encoder. Tapez quelques données et appuyez sur Entrée, et vous recevrez la sortie codée à l’écran.
Validation de la clé utilisateur
Voyons maintenant un exemple de décodage base64. Nous allons utiliser le décodage base64 pour vérifier la validité de l’utilisateur. Pour ce faire, nous allons créer un script qui va demander à l’utilisateur une clé. Ensuite, il fera correspondre la clé entrée avec la clé prédéfinie, qui sera d’abord décodée par le décodage base64. Si la clé entrée par l’utilisateur correspond à la clé prédéfinie, il imprimera le message « Vous avez entré une clé valide », sinon, vous verrez « La clé que vous avez entrée n’est pas valide « imprimé sur l’écran.
Créer un script « test1.sh » avec le code suivant:
# Imprimer le message pour demander une entrée
echo « Enter your key »
# Sauvegarder la clé fournie par l’utilisateur dans une variable nommée « key »
read key
# Décoder la clé codée (QWJjMTIzCg) et sauvegarder la sortie dans une variable nommée « orig_key »
orig_key=`echo ‘QWJjMTIzCg==’ | base64 –decode`
# Comparez la clé entrée par l’utilisateur avec la clé décodée
if ; then
#si la clé correspond, imprimez ceci :
echo « Vous avez entré une clé valide »
else
#si la clé ne correspond pas, imprimez ceci:
echo « La clé que vous avez entrée n’est pas valide »
fi
Exécutez le script comme suit:
Après avoir exécuté le script, on vous demandera la clé. Tapez la clé et appuyez sur la touche Entrée. Si la clé entrée correspond à la clé décodée prédéfinie, vous recevrez le message » Vous avez entré une clé valide « , sinon le message » La clé que vous avez entrée n’est pas valide » sera imprimé sur l’écran.
Voici comment vous pouvez utiliser la base64 pour coder et décoder une chaîne de caractères ou un fichier à partir de la ligne de commande. Les résultats peuvent être soit imprimés sur la sortie standard, soit enregistrés dans un fichier. Cependant, rappelez-vous que l’encodage n’est pas similaire au cryptage, et que l’on peut facilement révéler les données encodées, il n’est donc pas recommandé d’utiliser l’encodage pour la transmission de données sensibles.