mysql.h


AES_ENCRYPT, AES_DECRYPT

AES_ENCRYPT(string,key_string) 
AES_DECRYPT(string,key_string)

Estas funciones permiten encriptar y desencriptar datos usando el algoritmo oficial AES (Advanced Encryption Standard), conocido previamente como Rijndael. Se usa una codificación con una clave de 128 bits de longitud, pero se puede extender a 256 modificando el fuente. Se ha seleccionado 128 bits porque es mucho más rápido y normalemente es proporciona suficiente seguridad. Los argumentos de entrada pueden ser de cualquier longitud. Si cualquier argumento es NULL, el resultado de la función es también NULL. Como AES es un algoritmo a nivel de bloque, se usa relleno parapara codificar cadenas de longitud irregular y entonces la longitud de la cadena resultante puede ser calculada como 16*(trunc(string_length/16)+1). Si AES_DECRYPT() detecta datos inválidos o un relleno incorrecto, devuelve NULL. Además, es posible que AES_DECRYPT() devuelva una valor no NULL (seguramente basura) si los datos de entrada o la clave son inválidos. Se pueden usar la funciones AES para almacenar datos en un formato encriptado modificando las consultas:

INSERT INTO t VALUES (1,AES_ENCRYPT('text','password'));

Se puede obtener mayor seguridad no transfiriendo la clave sobre la conexión para cada consulta, esto puede conseguirse almacenandola en una variable del servidor durante la conexión:

SELECT @password:='my password';
INSERT INTO t VALUES (1,AES_ENCRYPT('text',@password));

AES_ENCRYPT() y AES_DECRYPT() fueron añadidas en la versión 4.0.2, y pueden considerarse como las funciones de encritado criptográfico más seguras disponibles actualmente en MySQL.