Codificar y Decodificar Base64 desde la terminal

AdriMcGrady 28/02/2022

Recientemente he tenido que hacer uso de base64 para codificar algunas cadenas de texto. Esto puede ser útil para codificar un fichero de forma básica, convertir una cadena con caracteres no alfabéticos a una cadena que sólo tiene estos caracteres, o incluso para codificar tokens o cadenas de autorización en determinadas APIs. Así que aprovechando eso, os dejo este mini-artículo de como usar el comando base64 desde la terminal.

Para ir al grano voy a poner directamente ejemplos de uso del comando base64 en la terminal.

Codificar una cadena en base64

Esta es la manera en la que personalmente más uso el comando. Sería así:

echo -n "cadena" | base64

Por ejemplo, vamos a codificar la cadena “noroute2host.com”

echo -n "noroute2host.com" | base64
bm9yb3V0ZTJob3N0LmNvbQ==

En función de lo que quieras hacer es muy importante la opción -n del echo puesto que esto evitará que se incluya el salto de línea en la cadena codificada. Esto suele ser un punto de error al codificar tokens o cadenas de autorización de APIs. Si no usamos esta opción la cadena codificada será distinta:

echo "noroute2host.com" | base64
bm9yb3V0ZTJob3N0LmNvbQo=

Decodificar una cadena base64

En este caso hay que usar la opción -d. El comando quedaría así:

echo -n "cadenaBase64" | base64 -d"

Probemos a decodificar las dos cadenas obtenidas en el anterior punto. En este caso dejo el prompt para que se vea la diferencia sin y con salto de línea:

adrimcgrady@nanopifire3:~$ echo -n "bm9yb3V0ZTJob3N0LmNvbQ==" | base64 -d
noroute2host.comadrimcgrady@nanopifire3:~$
adrimcgrady@nanopifire3:~$ echo "bm9yb3V0ZTJob3N0LmNvbQo=" | base64 -d
noroute2host.com
adrimcgrady@nanopifire3:~$

Codificar un fichero en base64

Si por el contrario, lo que necesitas es codificar en base64 un fichero completo lo único que debes hacer es pasar el fichero como parámetro al comando.

La sintaxis sería así:

base64 tufichero.txt

Por ejemplo, si tenemos un fichero llamado “textoplano.txt” con el siguiente contenido:

Esto es un fichero en texto plano.
Solo servirá para comprobar como funciona el comando base64.
noroute2host.com

Se puede codificar de la siguiente manera:

base64 textoplano.txt 
RXN0byBlcyB1biBmaWNoZXJvIGVuIHRleHRvIHBsYW5vLgpTb2xvIHNlcnZpcsOhIHBhcmEgY29t
cHJvYmFyIGNvbW8gZnVuY2lvbmEgZWwgY29tYW5kbyBiYXNlNjQuCm5vcm91dGUyaG9zdC5jb20K

Y para guardarlo codificado solo tendremos que usar la redirección adecuada para guardar la salida en un fichero:

base64 textoplano.txt > textoplano.txt.base64

Decodificar un fichero base64

Por último, si ya tienes un fichero codificado en base64 y lo que te hace falta es decodificarlo es muy simple. Es exactamente igual que para codificar pero usando la opción -d. Es decir, quedaría así:

base64 -d tufichero.txt.base64

Por ejemplo, para decodificar el fichero del apartado anterior:

base64 -d textoplano.txt.base64
Esto es un fichero en texto plano.
Solo servirá para comprobar como funciona el comando base64.
noroute2host.com

Y para guardarlo decodificado, como antes, solo habrá que usar la redirección a un fichero nuevo.

base64 -d textoplano.txt.base64 > textoplano.txt.decodificado
Enlaces de interés:

Artículo anterior

Artículos relacionados: