Una vez más aquí. En esta ocasión vengo a dejar un pequeño artículo sobre algo que un usuario me ha pedido que escribiera. En las siguientes líneas vamos a ver cómo podemos crear un archivo para codificar y decodificar una validación de usuario utilizando base64 desde la terminal de Ubuntu.
Base 64 es un sistema de numeración posicional que usa 64 como base. Es la mayor potencia que puede ser representada usando únicamente los caracteres imprimibles de ASCII. Esto ha propiciado su uso para codificación de correos electrónicos, PGP y otras aplicaciones. Todas las variantes famosas que se conocen con el nombre de Base64 usan el rango de caracteres A-Z, a-z y 0-9 en este orden para los primeros 62 dígitos. Hay que decir que los símbolos escogidos para los últimos dos dígitos varían considerablemente de unas a otras.
Otros métodos de codificación como UUEncode y las últimas versiones de binhex usan un conjunto diferente de 64 caracteres para representar 6 dígitos binarios, pero estos nunca son llamados Base64.
Codificación de una contraseña introducida por el usuario
Usando la codificación base64, podemos codificar cualquier dato proporcionado por el usuario. Para este propósito, necesitaremos crear un script que tomará la entrada del usuario, lo codificará usando la codificación base64 e imprimirá los datos codificados en la salida estándar.
Vamos a crear un script llamado ‘test.sh‘ escribiendo en la terminal (Ctrl+Alt+T):
sudo vim test.sh
Dentro del archivo vamos a pegar el siguiente contenido:

#!/bin/bash # Imprimir mensaje para solicitar información echo "Proporciona algunos datos para codificar" # Guarda la entrada en una variable llamada 'datos' read datos # Codifica usando la codificación base64 y guarda la salida en 'encod_datos' encod_datos=`echo -n $datos | base64` # Imprimir salida codificada echo "El texto codificado es: $encod_datos"
Ejecuta el script de la siguiente manera:
./test.sh

Después de ejecutar el script, se nos pedirá que escribamos los datos que queramos codificar. Escribe algo y pulsa Intro, recibiremos la salida codificada en la pantalla.
Validación de la clave de usuario con base64
Para empezar vamos a ver un ejemplo de decodificación base64. Usaremos la decodificación base64 para verificar la validez del usuario.
Para ello, crearemos un script que le pedirá al usuario una clave. Luego, hará coincidir la clave de entrada con la clave predefinida, que primero se decodificará mediante la decodificación base64.
Si la clave ingresada por el usuario coincide con la clave predefinida, se imprimirá el mensaje ‘Ha ingresado una clave válida‘, de lo contrario, verá ‘La clave que ingresó no es válida‘ impreso en la pantalla.
Como decía, vamos a crear un script llamado ‘test1.sh‘ utilizando en la terminal (Ctrl+Alt+T) el comando:
sudo vim test1.sh
Dentro del archivo, vamos a pegar el siguiente contenido:

#!/bin/bash # Imprime el mensaje echo "Escribe la clave" # Guardamos la clave proporcionada por le usuario en la variable "key" read key # Decodificamos la clave (YWJjMTIzNDU=) y la guardamos en la variable “orig_key” orig_key=`echo 'YWJjMTIzNDU=' | base64 --decode` # Comparamos la clave proporcionada por el usuario y la clave que acabamos de decodificar if [ $key == $orig_key ]; then # Si las claves coinciden, imprime echo "Contraseña correcta" else # Si las claves no coinciden imprime echo "La clave no es correcta" fi
Una vez escrito lo anterior, guardamos y cerramos el archivo. Una vez en la terminal ejecutaremos el script con el siguiente comando:
./test1.sh
Después de ejecutar el script, se nos pedirá la clave. Escribe la clave y presione Intro. Si la clave ingresada coincide con la clave decodificada predefinida, recibirá el mensaje ‘Ha ingresado una clave válida‘:

De lo contrario, el mensaje ‘La clave que ingresó no es válida‘ se imprimirá en la pantalla:

Para terminar, quiero recordar que la codificación no es similar a la encriptación. Por este motivo, uno puede revelar fácilmente los datos codificados, por lo que no se recomienda utilizar la codificación para la transmisión de datos confidenciales.