Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Encriptación y desencriptación de datos con AES_ENCRYPT y AES_DECRYPT

Estas en el tema de Encriptación y desencriptación de datos con AES_ENCRYPT y AES_DECRYPT en el foro de Mysql en Foros del Web. Hola a tod@s; Necesito guardar datos encriptados y después mostrarlos. Buscando he encotrado lo que que busco, las funciones AES_ENCRYPT y AES_DECRYPT. Ahora bien a ...
  #1 (permalink)  
Antiguo 09/01/2008, 10:25
Avatar de forecast  
Fecha de Ingreso: octubre-2004
Mensajes: 259
Antigüedad: 19 años, 6 meses
Puntos: 4
Encriptación y desencriptación de datos con AES_ENCRYPT y AES_DECRYPT

Hola a tod@s;

Necesito guardar datos encriptados y después mostrarlos.

Buscando he encotrado lo que que busco, las funciones AES_ENCRYPT y AES_DECRYPT.

Ahora bien a la hora de hacer mis pruebas no consigo hacer que me funcione no se no parece muy difícil... os explico como lo hago.

Para encriptar
Código:
SET @password:='password';
INSERT INTO rrhh_usuari (DNI,adreca) VALUES (AES_ENCRYPT('99999999K',@password),AES_ENCRYPT('C/ María del Rosario',@password));
Esto me inserta los datos encriptados en ambos campos.

El problema lo estoy teniendo al mostrarlos

Código:
SET @password='password';
select AES_DECRYPT(DNI,@password),AES_DECRYPT(adreca,@password) FROM rrhh_usuari;
El resultado que obtengo es Null para el campo 'DNI' y en cambio el campo 'adreca' si lo veo correctamente.

No se es muy raro... he repasado el código y hago lo mismo para los dos campos... lo que no se es porque para uno funciona y para el otro no.

¿Alguna sugerencia?

Gracias de antemano.
  #2 (permalink)  
Antiguo 09/01/2008, 10:39
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 18 años, 11 meses
Puntos: 4
Re: Encriptación y desencriptación de datos con AES_ENCRYPT y AES_DECRYPT

sera DNI numerico?
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #3 (permalink)  
Antiguo 09/01/2008, 10:58
Avatar de forecast  
Fecha de Ingreso: octubre-2004
Mensajes: 259
Antigüedad: 19 años, 6 meses
Puntos: 4
Re: Encriptación y desencriptación de datos con AES_ENCRYPT y AES_DECRYPT

Nop, es un varchar de 9 carácteres...
  #4 (permalink)  
Antiguo 09/01/2008, 15:29
Avatar de pragone  
Fecha de Ingreso: diciembre-2007
Ubicación: Madrid
Mensajes: 223
Antigüedad: 16 años, 4 meses
Puntos: 2
Re: Encriptación y desencriptación de datos con AES_ENCRYPT y AES_DECRYPT

Ese es el problema. mira:
Código HTML:
mysql> select length(AES_ENCRYPT('yo','paolo'));
+-----------------------------------+
| length(AES_ENCRYPT('yo','paolo')) |
+-----------------------------------+
|                                16 |
+-----------------------------------+
1 row in set (0.00 sec)
Además, ten cuidado de marcar el campo como BINARY.
  #5 (permalink)  
Antiguo 10/01/2008, 05:14
Avatar de 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, 4 meses
Puntos: 2658
Re: Encriptación y desencriptación de datos con AES_ENCRYPT y AES_DECRYPT

Estoy de acuerdo con pragone. Ten en cuenta que las encriptaciones con AES_ENCRYPT() generan un string de caracteres extendidos cuya longitud debes respetar, por lo que tienes que pensar en un varchar mucho más largo de lo que defines, o directamente en BINARY.
Yo por mi lado tengo una rutina de consultas en una aplicación qmue usa AES_ENCRYPT() y AES_DECRYPT() contra un campo varchar y funciona.
  #6 (permalink)  
Antiguo 10/01/2008, 08:31
Avatar de forecast  
Fecha de Ingreso: octubre-2004
Mensajes: 259
Antigüedad: 19 años, 6 meses
Puntos: 4
Re: Encriptación y desencriptación de datos con AES_ENCRYPT y AES_DECRYPT

Efectivamente ese era el problema. Al encriptar la cadena incrementa en carácteres.

El problema ahora es que no se en cuanto aumentan los caracteres, es decir si tengo un varchar de 255 ¿cuanto es el máximo que puedo encriptar para no sobrepasar esta longitud?

En caso de ponerlos en binario ¿que longitud sería buena para meter un máximo de 255 caracteres?. Nunca trabajé con tipos de datos binario...
  #7 (permalink)  
Antiguo 10/01/2008, 10:09
Avatar de 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, 4 meses
Puntos: 2658
Re: Encriptación y desencriptación de datos con AES_ENCRYPT y AES_DECRYPT

Mirá, hasta ahora las cadenas de datos encriptados suelen ser de no más de 40 caracteres, o poco más. Por lo que definir un string de entre 36 a 64 caracteres en general debería alcanzar.
En ese caso mi recomendación es acotar la longitud de las claves y datos a encriptar, de modo de no permitir que las cadenas ya encriptadas superen la longitud prevista.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 01:17.