Cómo codificar o decodificar una cadena base64 en Linux

¿Quiere aprender a codificar y decodificar cadenas utilizando el esquema de texto binario base64? Este tutorial le mostrará dos métodos para codificar y decodificar una cadena en Linux usando el comando base64 y el lenguaje de programación Python.

→ Índice de contenidos

¿Dónde se utiliza base64?

base64 se usa ampliamente en diferentes dominios. Algunas de las áreas más comunes incluyen archivos adjuntos de correo electrónico, desarrollo web, redes y codificación de URL.

Algunos sistemas de correo electrónico utilizan base64 para codificar datos binarios, como imágenes y documentos, en formato de texto para que puedan transmitirse de forma segura con el mensaje. Los desarrolladores web también utilizan base64 para incrustar imágenes en HTML y CSS para reducir la cantidad de solicitudes HTTP y mejorar la velocidad de carga de la página.

Otro uso común de la codificación base64 es en tokens de autenticación. A veces, los nombres de usuario y las contraseñas se enmascaran utilizando este esquema de codificación y se agregan a los encabezados HTTP o parámetros de URL. En redes, base64 se utiliza en protocolos que utilizan comunicación basada en texto, como HTTP y SMTP, para transmitir datos sin corromperlos.

Lo que debes saber es que base64 es solo un esquema de codificación. Los datos codificados se pueden decodificar fácilmente para recuperar los datos originales. Nunca debes usarlo si necesitas cifrar datos.

Codificar una cadena usando el comando base64

La forma más sencilla de codificar una cadena usando base64 es enviarla al terminal usando el comando echo. El truco consiste en redirigir la salida del comando echo a base64, así:

echo 'I love Linux' | base64

Debido al comportamiento predeterminado del comando echo, hay un carácter de nueva línea al final de la cadena. Si desea omitirlo y solo usar la cadena, ejecute:

echo -n 'I love Linux' | base64

La terminal de Linux que muestra el proceso de codificación de una cadena usando base64 omitiendo el carácter de nueva línea

Como puede ver, la salida es diferente a la anterior. También puede hacer esto usando el comando printf que no agrega automáticamente un carácter de nueva línea a la cadena. El formato se muestra a continuación:

printf 'I love Linux' | base64

La terminal de Linux que muestra el proceso de codificación de una cadena recibida del comando printf usando base64

Este resultado es el mismo que el anterior porque esta vez no hay caracteres de nueva línea. Si está familiarizado con estas cadenas en Linux, también puede usarlas para enviar la salida de la cadena al comando base64 de esta manera:

base64 <<< 'I love Linux'

La terminal de Linux muestra cómo codificar una cadena usando el comando base64 con la ayuda del operador de cadena aquí

Similar al comando echo, -string agrega un carácter de nueva línea al final de la cadena.

Codificar archivos usando el comando base64

Para codificar un archivo usando base64, puede pasar el archivo directamente como una opción al comando base64.

Para probarlo, cree un nuevo archivo y agregue algo de texto. Si ya tienes un archivo de texto, úsalo. Creé un archivo llamado base.txt. Para codificar en base64 el contenido del archivo, ejecute:

base64 base.txt

La terminal de Linux que muestra el proceso de codificación de un archivo en base64 usando el comando base64

Recuerde reemplazar base.txt con su nombre de archivo. El comando anterior solo muestra la salida en la terminal. No guarda la cadena codificada en ninguna parte. Sin embargo, puede hacerlo fácilmente redirigiendo la salida a un archivo nuevo. Creé otro archivo llamado salida.txt. Esta vez guardaré el resultado en ese archivo vacío. Aquí está el comando para esto:

base64 base.txt > output.txt

La terminal de Linux que muestra el proceso de codificar el contenido de un archivo en base64 y guardarlo en otro archivo.

Como puede ver, el terminal no mostró la salida. En cambio, este comando lo guardó en otro archivo.

Decodificar una cadena base64 usando el comando base64

Para decodificar una cadena base64 y convertirla en una cadena normal, necesitará usar el indicador "-d" con el comando base64. Veamos una demostración usando el comando echo.

echo 'SG93VG9HZWVrCg==' | base64 -d

La terminal de Linux que muestra el proceso de decodificación de una cadena base64 usando el comando base64 con la ayuda del comando echo

Si desea utilizar here-strings para decodificar una cadena base64, utilice:

base64 -d <<< SG93VG9HZWVrCg==

La terminal de Linux que muestra el proceso de decodificación de una cadena base64 usando el comando base64 con la ayuda de here-strings

A veces, es posible que una cadena contenga caracteres no alfanuméricos. Puedes ignorarlos al decodificar la cadena usando la opción "-i".

Usando Python para codificar y decodificar una cadena base64

Si es programador de Python o está más familiarizado con el lenguaje de programación Python que con Bash, este método será más adecuado para usted. Python tiene un módulo base64 que puedes usar para codificar y decodificar cadenas. Puede usar el comando de terminal python3 o escribir un programa completo. Te mostraré ambas formas.

El comando python3 tiene un indicador "-m" o módulo. Puede utilizar este indicador para invocar el módulo base64. Luego puedes pasar la cadena con la ayuda del comando echo o here-strings. Aquí está el comando completo:

echo 'I love Linux' | python3 -m base64 # Using the echo commandpython3 -m base64 <<< 'I love Linux' # Using here-strings

La terminal de Linux muestra el proceso de codificación de una cadena en base64 usando el lenguaje Python

Para decodificar una cadena base64 simplemente use el indicador "-d" como se vio anteriormente con el comando base64. La sintaxis es la siguiente:

echo 'SSBsb3ZlIExpbnV4Cg==' | python3 -m base64 -d # Using the echo command​​​​​​python3 -m base64 -d <<< 'SSBsb3ZlIExpbnV4Cg==' # Using here-strings

La terminal de Linux que muestra el proceso de decodificación de una cadena base64 usando el lenguaje Python

Por supuesto, la forma más conveniente es crear un programa Python que pueda manejar la codificación y decodificación tomando la información del usuario. Primero, creemos un programa que codificará una cadena. Aquí está el código de codificación:

 import base64
input_string = input("Enter the string to encode: ")
encoded_string = base64.b64encode(input_string.encode('utf-8'))
decoded_string = base64.b64decode(encoded_string).decode('utf-8')
print("Encoded string:", encoded_string.decode('utf-8'))
print("Decoded string (verification):", decoded_string)

Guarde el archivo con un nombre adecuado y una extensión ".py". Lo estoy guardando como base64_encoder.py. Una vez hecho esto, ejecuta el programa con:

python3 base64_encoder.py

La terminal de Linux que muestra el proceso de codificación de una cadena usando un programa Python

También puede crear un programa para decodificar una cadena base64. Aquí hay un fragmento de código que puede usar:

 import base64
encoded_string = input("Enter the Base64 string to decode: ")
try:
   
   decoded_string = base64.b64decode(encoded_string).decode('utf-8')
   print("Decoded string:", decoded_string)
except Exception as e:
   print(f"Error decoding string: {e}")

Guarde el archivo y ejecute el programa de la misma manera.

python3 base64_decoder.py

La terminal de Linux que muestra el proceso de decodificación de una cadena base64 usando un programa Python

Ahora puedes usar estos programas de Python para codificar y decodificar cualquier cadena.

Estas son dos de las formas más sencillas de codificar y decodificar cadenas utilizando base64. Si quieres saber más sobre el comando base64 en Linux, lo mejor es consultar su página de manual.

Subir Change privacy settings