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';