84 - Encriptación de datos (aes_encrypt - aes_decrypt)


Problema:

Eliminamos la tabla "clientes" si existe:

  drop table if exists clientes;

Creamos la tabla:

create table clientes(
  nombre varchar(50),
  mail varchar(70),
  tarjetacredito blob,
  primary key (nombre)
);

Definimos el campo 'tarjetacredito' de tipo blob para almacenar en número de la tarjeta de crédito del cliente encriptado. Luego si alguien no autorizado accede a los datos de la tabla 'clientes' no podrá conocer en número de la tarjeta de crédito de los clientes.

Ingresamos algunos registros en la tabla 'clientes' teniendo en cuenta de encriptar el número de tarjeta de crédito:

insert into clientes 
  values ('Marcos Luis','marcosluis@gmail.com',aes_encrypt('5390700823285988','xyz123'));
insert into clientes 
  values ('Ganzalez Ana','gonzalesa@gmail.com',aes_encrypt('4567230823285445','xyz123'));
insert into clientes 
  values ('Lopez German','lopezg@yahoo.com',aes_encrypt('7840704453285443','xyz123'));

Si imprimimos al campo tarjetacredito podemos comprobar que se encuentra cifrado:

select tarjetacredito from clientes;

Para ver el número de la tarjeta de crédito debemos conocer la clave de encriptación:

select cast(aes_decrypt(tarjetacredito, 'xyz123') as char) from clientes;



Retornar