PHP - Error al desencriptar

 
Vista:
sin imagen de perfil
Val: 47
Ha aumentado su posición en 5 puestos en PHP (en relación al último mes)
Gráfica de PHP

Error al desencriptar

Publicado por Diego (37 intervenciones) el 22/08/2017 23:19:28
Buenas tardes.
Necesito una mano. Tengo que guardar en una base unos datos encriptados, como no tengo experiencia en el tema comencé a leer un poco y me decidí a utilizar MCRYPT.
Para encriptar utilizo:

1
2
3
4
5
6
7
$dato="aca va el dato";
 
$encryption = MCRYPT_RIJNDAEL_128;
$key='1234567890123456'; //16 digitos
$mode = MCRYPT_MODE_CBC;
$iv = mcrypt_create_iv(mcrypt_get_iv_size($encryption, $mode), MCRYPT_DEV_URANDOM);
$crypt = mcrypt_encrypt($encryption, $key, $dato, $mode, $iv);

Luego este dato lo guardo en mi base, hasta ahi va todo bien, el problema es cuando lo quiero recuperar.
Si traigo el dato de la base e intento desencriptar con:

1
$decoded = mcrypt_decrypt($encryption, $key, $dato, $mode, $iv);

Al ver $decoded veo sólo caracteres ilegibles.....

Si el dato lo encripto y lo desencripto sin pasar por la base funciona perfecto, el problema se genera cuando traigo el dato de la base y lo intento desencriptar.
Imagino que el problema está en el tipo de dato que tiene el campo en la base de datos, probé con, text, varchar, char y algunos más y nada, sigo sin poder resolverlo.
Tanto la base como las tablas y estos campos utilizan cotejamiento UTF8_UNICODE_CI

Alguna sugerencia ??

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Error al desencriptar

Publicado por xve (6935 intervenciones) el 23/08/2017 07:55:26
Hola Diego, has revisado la base de datos, que el valor se guarde correctamente? es decir, que se guarde igual que como lo devuelve la función mcrypt_encrypt()

si tiene alguna barra invertida \ puede que tengas que reemplazarla por dos barras invertidas \\
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 47
Ha aumentado su posición en 5 puestos en PHP (en relación al último mes)
Gráfica de PHP

Error al desencriptar

Publicado por Diego (37 intervenciones) el 23/08/2017 15:27:43
Hola xve, estuve chequeando lo que me decís.
La realidad es que no coincide nada, lo que tengo en la base si intento visualizarlo por pantalla sin desencriptar ya da diferencias. Por ejemplo:

Dato guardado en la base: ßLèÔ=s½‡äß/¬

Este dato es un numero de 16 digitos, sin espacios ni simbolos.

Si simplemente lo traigo y lo veo en pantalla veo esto: ����pM��]d��

Y al intentar desencriptarlo veo esto: ���l�Uy�cFP N

Estoy muy perdido.

jajajajajaj.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 47
Ha aumentado su posición en 5 puestos en PHP (en relación al último mes)
Gráfica de PHP

Error al desencriptar

Publicado por Diego (37 intervenciones) el 23/08/2017 15:57:24
xve ya encontré mi problema. Es un error de concepto por no saber utilizar este tipo de herramientas.

El problema es que estaba generando un $iv nuevo, aleatorio, al intentar desencriptar y en realidad esta clave debe ser la misma con la cual fue encriptado el dato.
Si no estoy perdido del todo esta variable es la sal que se agrega al dato, ya que son 5 parametros, el tipo de encriptación, el método, el dato, la sal y la llave. (no en ese orden)
Lo que me estaba pasando es que la sal la generaba nuevamente y utilizaba otra y obviamente el dato cambiaba.
La sal es mala para la salud....mental en este caso.

Gracias por tu ayuda.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Error al desencriptar

Publicado por xve (6935 intervenciones) el 23/08/2017 18:22:44
Gracias por comentarlo Diego!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar