84 - Encriptación de datos (encode - decode)


Las siguientes funciones encriptan y desencriptan valores.

Si necesitamos almacenar un valor que no queremos que se conozca podemos encriptar dicho valor, es decir, transformarlo a un código que no pueda leerse.

Con "encode" se encripta una cadena. La función recibe 2 argumentos: el primero, la cadena a encriptar; el segundo, una cadena usada como contraseña para luego desencriptar:

 select encode('feliz','dia');

El resultado es una cadena binaria de la misma longitud que el primer argumento.

Con "decode" desencriptamos una cadena encriptada con "encode". Esta función recibe 2 argumentos: el primero, la cadena a desencriptar; el segundo, la contraseña:

 select decode('§¡Ý7','dia');

Si la cadena de contraseña es diferente a la ingresada al encriptar, el resultado será incorrecto.

Retomamos la tabla "usuarios" que constaba de 2 campos: nombre del usuario (varchar de 30) y clave (varchar de 10).

Podemos ingresar registros encriptando la clave:

 insert into usuarios values ('MarioPerez',encode('Marito','octubre'));

La forma más segura es no transferir la contraseña a través de la conexión, para ello podemos almacenar la clave en una variable y luego insertar la clave encriptada:

 select @clave:=encode('RealMadrid','ganador');
 insert into usuarios values ('MariaGarcia',@clave);

Veamos los registros ingresados:

 select * from usuarios;

Desencriptamos la clave del usuario "MarioPerez":

 select decode(clave,'octubre') from usuarios
  where nombre='MarioPerez';

Desencriptamos la clave del usuario "MariaGarcia":

 select decode(clave,'ganador') from usuarios
  where nombre='MariaGarcia';

Retornar