-- Encriptar y desencriptar -- Porque hay veces que necesitamos almacenar información -- que no queremos que se vea pero queremos -- obtenerla de nuevo -- P. ej. tarjeta de crédito -- Para usamos el par aes_encrypt y aes_decrypt -- Nos sirven para encriptar una información con una contraseña -- Y con la misma contraseña podemos desencriptar -- Nos devuelve un objeto binario, si lo tenemos que almacenar -- tenemos que usar BLOB o varbinary select aes_encrypt('cadena a encriptar','cadena que es la clave') foo; select aes_decrypt(aes_encrypt('cadena a encriptar','cadena que es la clave'),'cadena que es la clave') foo; -- SIempre tenemos que tener una clave, y la usamos tanto para encriptar -- como para desencriptar. Si no la conocemos no podemos desencriptar update actor set apellido=aes_encrypt(last_name,'contraseña'); -- Usando la contraseña puedo decodificar el campo encriptado -- Lo convierto a cadena para poder leerlo select cast(aes_decrypt(apellido,'contraseña') as char) ap from actor; -- Si uso contraseñas cuanto más largas y complicadas mejor -- Muchas veces se usan cosas como esta: update actor set apellido=aes_encrypt(last_name,sha2('contraseña',512)); select cast(aes_decrypt(apellido,sha2('contraseña',512)) as char) ap from actor; SELECT last_name, cast(apellido as char) apell, cast(aes_decrypt(apellido,sha2('contraseña',512)) as char) ap FROM thecorner_sakila.actor; -- Puedo generar contraseñas que tengan en cuenta datos del registro update actor set apellido=aes_encrypt(last_name,sha2(concat(actor_id,'contraseña'),512));