Ver Mensaje Individual
  #5 (permalink)  
Antiguo 13/06/2010, 07:59
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: recuperar claver encriptadas

En MySQL existe un par de funciones que permiten encriptación y desencriptación: AES_ENCRYPT() y AES_DECRYPT(). El único problema que tienen es que a su vez requieren el uso de un password secundario para desencriptar lo encriptado...
Cita:
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.
Los argumentos 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, retorna NULL. Sin embargo, es posible para AES_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:
Código MySQL:
Ver original
  1. 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 cada consulta, que puede hacerse almacenando la clave en una variable del servidor al hacer la conexión. Por ejemplo:

Código MySQL:
Ver original
  1. SELECT @password:='my password';
AES_ENCRYPT() y AES_DECRYPT() pueden considerarse las funciones de encriptación criptográficamente más seguras disponibles en MySQL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)