Funciones de encriptacion

Solo disponible en BuenasTareas
  • Páginas : 6 (1264 palabras )
  • Descarga(s) : 0
  • Publicado : 8 de marzo de 2011
Leer documento completo
Vista previa del texto
Funciones de encriptación

Las funciones en esta sección encriptan y desencriptan valores. Si quiere almacenar resultados de una función de encriptación que puede contaner valores arbitrarios de bytes, use una columna BLOB en lugar de CHAR oVARCHAR para evitar problemas potenciales con eliminación de espacios finales que pueden cambiar los valores de datos.
• AES_ENCRYPT(str,key_str) ,AES_DECRYPT(crypt_str,key_str)
Estas funciones permiten encriptación y desencriptación de datos usando el algoritmo oficial AES (Advanced Encryption Standard), conocido anteriormente como "Rijndael." Se usa una encriptación con una clave de 128-bit , pero puede ampliarlo hasta 256 bits modificando las fuentes. Elegimos 128 porque es mucho más rápido y de momento es suficientemente seguro.
Losargumentos de entrada pueden ser de cualquier longitud. Si algún argumento es NULL, el resultado de esta función también es NULL.
Debido a que AES es un algoritmo a nivel de bloques, se usa relleno para cadenas de longitud impar y así la longitud de la cadena resultante puede calcularse como 16 * (trunc(string_length / 16) + 1).
Si AES_DECRYPT() detecata datos inválidos o relleno incorrecto, retornaNULL. Sin embargo, es posible paraAES_DECRYPT() retornar un valor no NULL (posiblemente basura) si los datos de entrada o la clave son inválidos.
Puede usar la función AES para almacenar datos de forma encriptada modificando sus consultas:
INSERT INTO t VALUES (1,AES_ENCRYPT('text','password'));
Puede obtener incluso mejor seguridad si no transfiere la clave a través de la conexión para cadaconsulta, que puede hacerse almacenando la clave en una variable del servidor al hacer la conexión. Por ejemplo:
SELECT @password:='my password';
INSERT INTO t VALUES (1,AES_ENCRYPT('text',@password));
AES_ENCRYPT() y AES_DECRYPT() pueden considerarse las funciones de encriptación criptográficamente más seguras disponibles en MySQL.
• DECODE(crypt_str,pass_str)
Desencripta la cadena encriptadacrypt_str usando pass_str como contraseña. crypt_str debe ser una cadena retornada de ENCODE().
• ENCODE(str,pass_str)
Encripta str usando pass_str como contraseña. Para desencriptar el resultado, use DECODE().
El resultado es una cadena binaria de la misma longitud que str. Si quiere guardarlo en una columna, use una columna de tipo BLOB .
• DES_DECRYPT(crypt_str[,key_str])
Desencripta unacadena encriptada con DES_ENCRYPT(). En caso de error, esta función retorna NULL.
Tenga en cuenta que esta función funciona sólo si MySQL se configura con soporte SSL. Consulte Sección 5.7.7, “Usar conexiones seguras”.
Si no se da argumento key_str, DES_DECRYPT() examina el primer byte de la cadena encriptada para determinar el número de clave DES que se usó para encriptar la cadena original, y luegolee la clave del fichero clave DES para desencriptar el mensaje. Para que esto funcione, el usuario debe tener el privilegio SUPER. El fichero clave puede especificarse con la opción del servidor --des-key-file .
Si le pasa a esta función el argumento key_str , esta cadena se usa como la clave para desencriptar el mensaje.
Si el argumento crypt_str no parece una cadena encriptada, MySQL retornacrypt_str.
• DES_ENCRYPT(str[,(key_num|key_str)])
Encriptas la cadena con la clave dada usando el algoritmo triple-DES. En caso de error, retorna NULL.
Tenga en cuenta que esta función funciona sólo si MySQL se configura con soporte SSL. Consulte Sección 5.7.7, “Usar conexiones seguras”.
La clave de encriptación a usar se elige basada en el segundo argumento de DES_ENCRYPT(), si se ha dadouno:
Argumento Descripción
Sin argumento Se usa la primera clave del fichero clave DES.
key_num El número de clave dado (0-9) del fichero clave DES se usa.
key_str Se usa la cadena clave dada para encriptar str.
El fichero clave puede especificarse con la opción de servidor --des-key-file .
La cadena retornada es una cadena binaria donde el primer carácter es CHAR(128 | key_num).
Se añade...
tracking img