Codificación y decodificación de Base64 desde la línea de comandos

La codificación es el proceso utilizado para convertir los datos en un formato requerido para su transmisión o almacenamiento efectivo. Por el contrario, la decodificación es el método opuesto a la codificación que convierte los datos codificados de nuevo a su formato original. Base64 es el proceso de codificación en el que los datos binarios se convierten en ASCII. La codificación Base64 es necesaria sobre todo para evitar los problemas de transmisión que se producen cuando los datos binarios se transmiten a sistemas basados en texto que no pueden manejar los datos binarios correctamente. Como resultado, la información se pierde o se corrompe durante la transmisión.

Algunos de los usos de la codificación son:

  • Compresión de datos
  • Ocultación de datos
  • Transmisión de datos en otro formato

Para la codificación de datos, Base64 sólo utiliza el alfabeto, el número y el símbolo =. Por ejemplo, c2FtcGxlCg== es un dato codificado válido, mientras que b?HV3.Zh2J== no es un dato codificado válido.

En este artículo, explicaremos cómo utilizar el comando base64 para codificar y decodificar los datos de una cadena o un archivo.

Hemos realizado los comandos en el sistema Ubuntu 20.04 Focal Fossa. Sin embargo, también se pueden ejecutar los mismos comandos en otras distribuciones de Linux. Para ejecutar los comandos, hemos utilizado la aplicación de línea de comandos Terminal, a la que se puede acceder mediante el atajo de teclado Ctrl+Alt+T.

Sintaxis de Base64

Aquí está la sintaxis para codificar usando Base64:

base64

Opciones

Algunas de las opciones de la línea de comandos que se pueden usar con el comando base64 son:

-d o –decode

Usa esta opción para decodificar un archivo o una cadena.

–help

Utiliza esta opción para mostrar la ayuda relativa al uso de base64.

-i, –ignore-garbage

Utilice esta opción durante la decodificación para ignorar los caracteres no alfabéticos

–version

Utilice esta opción para mostrar la información de la versión

Codificación de cadenas

Puede codificar fácilmente una cadena utilizando el comando base64. Por ejemplo, para codificar un texto de ejemplo «Bienvenido a Linux» a base64, el comando sería:

$ echo «Bienvenido a Linux» | base64

Este comando codificará el texto de la cadena utilizando base64 e imprimirá el texto codificado en la salida estándar como se muestra en la siguiente captura de pantalla

También puede guardar la salida codificada en un archivo en lugar de imprimir en la salida estándar utilizando el operador de redirección (>). El siguiente comando codificará el texto y guardará la salida en un archivo llamado «encodedfile.txt:

$ echo «Welcome to Linux» | base64 > encodedfile.txt

Para ver el archivo codificado, puede utilizar el comando cat:

$ cat encodedfile.txt

Cadena de decodificación

También puede decodificar el texto codificado en base64 utilizando la opción -decode o -d. Por ejemplo, para decodificar el texto codificado en base64 «V2VsY29tZSB0byBMaW51eAo=», el comando sería:

$ echo «V2VsY29tZSB0byBMaW51eAo=» | base64 –decode

Este comando decodificará el texto codificado en base64 e imprimirá el texto original en la salida estándar como se muestra en la siguiente captura de pantalla.

También puede guardar la salida decodificada en un archivo en lugar de imprimirla en la salida estándar utilizando el operador de redirección (>). El siguiente comando decodificará el texto codificado y guardará el texto original en un archivo llamado «decodedfile.txt:

$ echo «V2VsY29tZSB0byBMaW51eAo=» | base64 -decode > decodedfile.txt

Codificación de un archivo de texto

El comando base64 también puede utilizarse para codificar un archivo de texto. Por ejemplo, para codificar un archivo de texto llamado «testfile.txt», el comando sería:

$ base64 testfile.txt

Este comando codificará el archivo de texto especificado e imprimirá su forma codificada en la salida estándar como se muestra en la siguiente captura de pantalla.

También puede guardar la salida codificada en un archivo en lugar de imprimirla en la salida estándar utilizando el operador de redirección (>). El siguiente comando convertirá el texto del archivo utilizando base64 y guardará la salida en otro archivo llamado «encodedfile.txt:

Para ver el archivo codificado, puede utilizar el comando cat:

$ cat encodedfile.txt

Decodificación del archivo de texto

Para decodificar un archivo de texto codificado, utilice la opción -decode o -d. Por ejemplo, para decodificar el archivo de texto codificado en base64 «encodedfile.txt», el comando sería:

$ base64 -d encodedfile.txt

Este comando decodificará el archivo de texto codificado en base64 e imprimirá el texto original en la salida estándar como se muestra en la siguiente captura de pantalla.

También puede guardar la salida decodificada en un archivo en lugar de imprimirla en la salida estándar utilizando el operador de redirección (>). El siguiente comando decodificará el texto codificado y guardará el texto original en un archivo llamado «decodedfile.txt» que puede ser visto más tarde usando el comando cat.

$ base64 -d encodedfile.txt > decodedfile.txt

Codificación de la entrada del usuario

Usando la codificación base64, podemos codificar cualquier dato proporcionado por el usuario. ¡Para ello, necesitaremos crear un script que tome la entrada del usuario, la codifique utilizando la codificación base64, e imprima los datos codificados en la salida estándar.

Crea un script «test.sh» con el siguiente código:

#!/bin/bash
# Imprime un mensaje para pedir la entrada
echo «Provide Some data to encode»
# Guarda la entrada en una variable llamada «data»
read data
# Codifica usando codificación base64 y guarda la salida en una variable «encod_data»
encod_data=`echo -n $data | base64`
# Imprime la salida codificada
echo «Encoded text is : $encod_data»

Ejecuta el script de la siguiente manera:

$ ./test.sh

Después de ejecutar el script, se le pedirá que introduzca los datos que desea codificar. Escribe algunos datos y pulsa Enter, y recibirás la salida codificada en la pantalla.

Validando la clave de usuario

Ahora vamos a ver un ejemplo de decodificación base64. Utilizaremos la decodificación base64 para comprobar la validez del usuario. Para ello, crearemos un script que pedirá al usuario una clave. Luego cotejará la clave introducida con la clave predefinida, que será decodificada primero por la decodificación base64. ¡Si la clave introducida por el usuario coincide con la clave predefinida, imprimirá el mensaje «Has introducido una clave válida», en caso contrario, verás impreso en pantalla «La clave que has introducido no es válida»

Crea un script «test1.sh» con el siguiente código:

#!/bin/bash
# Imprime un mensaje para pedir la entrada
echo «Enter your key»
# Guarda la clave proporcionada por el usuario en una variable llamada «key»
read key
# Decodifica la clave codificada (QWJjMTIzCg) y guarda la salida en una variable llamada «orig_key»
orig_key=`echo ‘QWJjMTIzCg==’ | base64 -.-decode`
# Compara la clave introducida por el usuario con la clave decodificada
if ; then
#si la clave coincide, imprime esto:
echo «Ha introducido una clave válida»
else
#si la clave no coincide, imprime esto:
echo «La clave que ha introducido no es válida»
fi

Ejecuta el script de la siguiente manera:

$ ./test1.sh

Después de ejecutar el script, se le pedirá la clave. Escriba la clave y pulse Enter. Si la clave introducida coincide con la clave decodificada predefinida, recibirá el mensaje «Ha introducido una clave válida», de lo contrario se imprimirá en la pantalla el mensaje «La clave que ha introducido no es válida».

Así es como se puede utilizar base64 para codificar y decodificar una cadena o un archivo desde la línea de comandos. Los resultados pueden imprimirse en la salida estándar o guardarse en un archivo. Sin embargo, recuerde que la codificación no es similar a la encriptación, y uno puede revelar fácilmente los datos codificados, por lo que no se recomienda utilizar la codificación para la transmisión de datos sensibles.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.