Foros del Web » Programando para Internet » PHP »

Error al desencriptar php con MCRYPT

Estas en el tema de Error al desencriptar php con MCRYPT en el foro de PHP en Foros del Web. VERAN, tengo el siguiente codigo @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original $algorithm = MCRYPT_BLOWFISH ; $key = 'abrete' ; $data = 'me gusta el pollo ...
  #1 (permalink)  
Antiguo 09/03/2020, 16:39
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 3 meses
Puntos: 52
Error al desencriptar php con MCRYPT

VERAN, tengo el siguiente codigo

Código PHP:
Ver original
  1. $algorithm = MCRYPT_BLOWFISH;
  2. $key = 'abrete';
  3. $data = 'me gusta el pollo asado';
  4. $mode = MCRYPT_MODE_CBC;
  5.  
  6. $iv = mcrypt_create_iv(mcrypt_get_iv_size($algorithm, $mode),
  7.                        MCRYPT_DEV_URANDOM);
  8.  
  9. $encrypted_data = mcrypt_encrypt($algorithm, $key, $data, $mode, $iv);
  10. $plain_text = base64_encode($encrypted_data);
  11. echo $plain_text . "\n";
  12.  
  13. $encrypted_data = base64_decode($plain_text);
  14. $decoded = mcrypt_decrypt($algorithm, $key, $encrypted_data, $mode, $iv);
  15. echo $decoded . "\n";
  16. //hasta aqui todo bien, me encripta y desencripta..
  17.  
  18. //ESTA CLAVE ES LA ANTERIOR QUE ME DIO,, pero ahora directamente no me sale nada bien.. me lanza esto :   ���ړ1Y el pollo asado
  19. $plain_text="61ZmPrTUqEqr1OONKyjVfA+qE34UffPr";
  20.  
  21. $encrypted_data = base64_decode($plain_text);
  22. $decoded = mcrypt_decrypt($algorithm, $key, $encrypted_data, $mode, $iv);
  23. echo "<br>".$decoded . "\n";

hasta donde va todo bien, me encripta y desencripta..
pero cuando la clave la pongo de nuevo, pero ahora directamente no me sale nada bien.. me lanza esto
���ړ1Y el pollo asado

¿que estoy haciendo mal?
de antemano gracias
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #2 (permalink)  
Antiguo 09/03/2020, 17:25
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años, 6 meses
Puntos: 120
Respuesta: Error al desencriptar php con MCRYPT

Cita:
Iniciado por minombreesmm Ver Mensaje
VERAN, tengo el siguiente codigo

Código PHP:
Ver original
  1. $algorithm = MCRYPT_BLOWFISH;
  2. $key = 'abrete';
  3. $data = 'me gusta el pollo asado';
  4. $mode = MCRYPT_MODE_CBC;
  5.  
  6. $iv = mcrypt_create_iv(mcrypt_get_iv_size($algorithm, $mode),
  7.                        MCRYPT_DEV_URANDOM);
  8.  
  9. $encrypted_data = mcrypt_encrypt($algorithm, $key, $data, $mode, $iv);
  10. $plain_text = base64_encode($encrypted_data);
  11. echo $plain_text . "\n";
  12.  
  13. $encrypted_data = base64_decode($plain_text);
  14. $decoded = mcrypt_decrypt($algorithm, $key, $encrypted_data, $mode, $iv);
  15. echo $decoded . "\n";
  16. //hasta aqui todo bien, me encripta y desencripta..
  17.  
  18. //ESTA CLAVE ES LA ANTERIOR QUE ME DIO,, pero ahora directamente no me sale nada bien.. me lanza esto :   ���ړ1Y el pollo asado
  19. $plain_text="61ZmPrTUqEqr1OONKyjVfA+qE34UffPr";
  20.  
  21. $encrypted_data = base64_decode($plain_text);
  22. $decoded = mcrypt_decrypt($algorithm, $key, $encrypted_data, $mode, $iv);
  23. echo "<br>".$decoded . "\n";

hasta donde va todo bien, me encripta y desencripta..
pero cuando la clave la pongo de nuevo, pero ahora directamente no me sale nada bien.. me lanza esto
���ړ1Y el pollo asado

¿que estoy haciendo mal?
de antemano gracias
aparate de la clave, tienes que usar el mismo "IV" que se uso para encriptar, de lo contrario te dara error
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #3 (permalink)  
Antiguo 10/03/2020, 11:42
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 3 meses
Puntos: 52
Respuesta: Error al desencriptar php con MCRYPT

Cita:
Iniciado por tuadmin Ver Mensaje
aparate de la clave, tienes que usar el mismo "IV" que se uso para encriptar, de lo contrario te dara error
perdon, no entiendo, estoy usando la misma variable de $iv, lo que me arrojo de resultado anteriormente
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra

Última edición por minombreesmm; 10/03/2020 a las 11:59
  #4 (permalink)  
Antiguo 10/03/2020, 21:10
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años, 6 meses
Puntos: 120
Respuesta: Error al desencriptar php con MCRYPT

Cita:
Código PHP:
Ver original
  1. $plain_text="61ZmPrTUqEqr1OONKyjVfA+qE34UffPr";
  2.  
  3. $encrypted_data = base64_decode($plain_text);
  4. $decoded = mcrypt_decrypt($algorithm, $key, $encrypted_data, $mode, $iv);
  5. echo "<br>".$decoded . "\n";
mira ahi estas indicando que tu variable $plain_text es de la Anterior en ese Anterior, la variable $iv es distinta a la actual $iv, en cada Ejecucion del SCRIPT, tu $iv sera distinta, aleatoria, random MCRYPT_DEV_URANDOM

asi que lo correcto y como todo mundo lo hace, Almacena ese $IV junto a tu texto Encriptado

como en esta modificacion a tu script

Código PHP:
Ver original
  1. $algorithm = MCRYPT_BLOWFISH;
  2. $key = 'abrete';
  3. $data = 'me gusta el pollo asado';
  4. $mode = MCRYPT_MODE_CBC;
  5.  
  6. $iv = mcrypt_create_iv(mcrypt_get_iv_size($algorithm, $mode),
  7.                        MCRYPT_DEV_URANDOM);
  8.  
  9. $encrypted_data = mcrypt_encrypt($algorithm, $key, $data, $mode, $iv);
  10. $plain_text = base64_encode($encrypted_data).':'. base64_encode($iv) ;
  11. echo $plain_text . "\n";
  12.  
  13. $partes = explode(":",$plain_text);
  14. $encrypted_data = base64_decode($partes[0]);
  15. $iv = base64_decode($partes[1]);
  16. $decoded = mcrypt_decrypt($algorithm, $key, $encrypted_data, $mode, $iv);
  17. echo $decoded . "\n";
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #5 (permalink)  
Antiguo 11/03/2020, 09:52
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Error al desencriptar php con MCRYPT

tu_admin, iba a preguntar qué tan seguro es tener el IV almacenado en la misma cadena, pero ya vi que no afecta, porque para desencriptar también se requiere el algoritmo y la llave.

Entonces... yo no pasé por aquí!
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 11/03/2020, 19:46
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años, 6 meses
Puntos: 120
Respuesta: Error al desencriptar php con MCRYPT

Cita:
Iniciado por Triby Ver Mensaje
tu_admin, iba a preguntar qué tan seguro es tener el IV almacenado en la misma cadena, pero ya vi que no afecta, porque para desencriptar también se requiere el algoritmo y la llave.

Entonces... yo no pasé por aquí!
jjjeej claro, pero la magia del IV es que depende de ti donde lo quieres almacenar para que tu encriptacion sea mas fuerte, ponerlo al principio , al final, en medio , despues de 2 caracteres, antes de 2 Bits, etc.. tu encriptacion sera muy fuerte con ello, almenos que compartas o sea publico tu forma de encriptar
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #7 (permalink)  
Antiguo 13/03/2020, 11:01
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 3 meses
Puntos: 52
Respuesta: Error al desencriptar php con MCRYPT

Cita:
Iniciado por tuadmin Ver Mensaje
mira ahi estas indicando que tu variable $plain_text es de la Anterior en ese Anterior, la variable $iv es distinta a la actual $iv, en cada Ejecucion del SCRIPT, tu $iv sera distinta, aleatoria, random MCRYPT_DEV_URANDOM

asi que lo correcto y como todo mundo lo hace, Almacena ese $IV junto a tu texto Encriptado

como en esta modificacion a tu script

Código PHP:
Ver original
  1. $algorithm = MCRYPT_BLOWFISH;
  2. $key = 'abrete';
  3. $data = 'me gusta el pollo asado';
  4. $mode = MCRYPT_MODE_CBC;
  5.  
  6. $iv = mcrypt_create_iv(mcrypt_get_iv_size($algorithm, $mode),
  7.                        MCRYPT_DEV_URANDOM);
  8.  
  9. $encrypted_data = mcrypt_encrypt($algorithm, $key, $data, $mode, $iv);
  10. $plain_text = base64_encode($encrypted_data).':'. base64_encode($iv) ;
  11. echo $plain_text . "\n";
  12.  
  13. $partes = explode(":",$plain_text);
  14. $encrypted_data = base64_decode($partes[0]);
  15. $iv = base64_decode($partes[1]);
  16. $decoded = mcrypt_decrypt($algorithm, $key, $encrypted_data, $mode, $iv);
  17. echo $decoded . "\n";
Hola gracias,
nadamas que me marco el siguiente error

Warning: Use of undefined constant MCRYPT_BLOWFISH - assumed 'MCRYPT_BLOWFISH' (this will throw an Error in a future version of PHP) in C:\wamp64\www\cookies\encode.php on line 197

Warning: Use of undefined constant MCRYPT_MODE_CBC - assumed 'MCRYPT_MODE_CBC' (this will throw an Error in a future version of PHP) in C:\wamp64\www\cookies\encode.php on line 200

Fatal error: Uncaught Error: Call to undefined function mcrypt_create_iv() in C:\wamp64\www\cookies\encode.php:202 Stack trace: #0 {main} thrown in C:\wamp64\www\cookies\encode.php on line 202


A su vez, ya habia creado otro que me funcionó
Código PHP:
Ver original
  1. $token = '<form action="ejemplo.php" method="get">
  2.  <p>Nombre: <input type="text" name="nombre" size="40"></p>
  3.  <p>Año de nacimiento: <input type="number" name="nacido" min="1900"></p>
  4.  <p>Sexo:
  5.    <input type="radio" name="hm" value="h"> Hombre
  6.    <input type="radio" name="hm" value="m"> Mujer
  7.  </p>
  8.  <p>
  9.    <input type="submit" value="Enviar">
  10.    <input type="reset" value="Borrar">
  11.  </p>
  12. </form>';
  13.  
  14. $cipher_method = 'aes-128-ctr';
  15. $enc_key = openssl_digest("clave maestra", 'SHA256', TRUE);
  16. $enc_iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($cipher_method));
  17. $crypted_token = openssl_encrypt($token, $cipher_method, $enc_key, 0, $enc_iv) . "::" . bin2hex($enc_iv);
  18. unset($token, $cipher_method, $enc_key, $enc_iv);
  19.  
  20.  
  21.  
  22. echo $crypted_token;
  23.  
  24.  
  25.  
  26. list($crypted_token, $enc_iv) = explode("::", $crypted_token);;
  27. $cipher_method = 'aes-128-ctr';
  28. $enc_key = openssl_digest("clave maestra", 'SHA256', TRUE);
  29. $token = openssl_decrypt($crypted_token, $cipher_method, $enc_key, 0, hex2bin($enc_iv));
  30. unset($crypted_token, $cipher_method, $enc_key, $enc_iv);
  31.  
  32. echo "<br>".$token;
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #8 (permalink)  
Antiguo 05/04/2020, 14:51
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 3 meses
Puntos: 52
Respuesta: Error al desencriptar php con MCRYPT

Si funcionó pero tengo una duda..
yo voy a usar esa encriptacion para encriptar datos comerciales de paypal.. clientid y secret y asi
lo que no entiendo es donde voy a guardar la clave de desencriptacion?
suponiendo que este guardada en la base de datos..
a la hora de desencriptar voy a tener que usarla y sera visible para el programador que secuestre mi codigo fuente, y con ella podra desencriptar los datos sensibles de la cuenta comercial.. alguna sugerencia?
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #9 (permalink)  
Antiguo 05/04/2020, 17:20
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años, 6 meses
Puntos: 120
Respuesta: Error al desencriptar php con MCRYPT

con respecto al error

"Warning: Use of undefined constant MCRYPT_BLOWFISH - assumed 'MCRYPT_BLOWFISH' (this will throw an Error in a future version of PHP) in C:\wamp64\www\cookies\encode.php on line 197"

es por la version de PHP , en cada version puede haber grandes cambios, funciones eliminadas. clases, constantes o variables, o tambien otro cosa por lo que ta dio el error es la EXTENSION que no esta habilitada en el PHP.ini

Cita:
Iniciado por minombreesmm Ver Mensaje
Si funcionó pero tengo una duda..
yo voy a usar esa encriptacion para encriptar datos comerciales de paypal.. clientid y secret y asi
lo que no entiendo es donde voy a guardar la clave de desencriptacion?
suponiendo que este guardada en la base de datos..
a la hora de desencriptar voy a tener que usarla y sera visible para el programador que secuestre mi codigo fuente, y con ella podra desencriptar los datos sensibles de la cuenta comercial.. alguna sugerencia?
Seria bueno que crees otro post, para asi no mesclar la base de informacion, y se un poco mas conciso en la pregunta, con algun ejemplo, o algo que hayas investigado, por mientras puedes revisar sobre las encriptaciones PUBLICAS y PRIVADAS que usa BITCOIN por ejemplo, te puede dar algunas luces
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9

Etiquetas: desencriptar, mcrypt
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:02.