Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/08/2010, 22:50
Avatar de abimaelrc
abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Pasar variable GET encriptado con algoritmo de semilla

El problema es que estás generando otro vector al tratar de desencriptar al usar dos veces mcrypt_create_iv. Mira este ejemplo, lo tomé del manual y lo modifiqué para que tengas una idea de lo que puedes hacer.
Código PHP:
Ver original
  1. <?php
  2. function cryptMessage($message, $key){
  3.     /* Open the cipher */
  4.     $td = mcrypt_module_open('rijndael-256', '', 'ofb', '');
  5.  
  6.     /* Create the IV and determine the keysize length, use MCRYPT_RAND
  7.      * on Windows instead */
  8.     $ks = mcrypt_enc_get_key_size($td);
  9.     $iv = mcrypt_create_iv($ks, MCRYPT_RAND);
  10.  
  11.     /* Create key */
  12.     $key = substr(md5($key), 0, $ks);
  13.  
  14.     /* Intialize encryption */
  15.     mcrypt_generic_init($td, $key, $iv);
  16.  
  17.     /* Encrypt data */
  18.     $encrypted = mcrypt_generic($td, $message);
  19.  
  20.     /* Terminate encryption handler */
  21.  
  22.     return array('crypt' => $encrypted,
  23.         'key' => $key,
  24.         'iv' => $iv);
  25. }
  26.  
  27. function decryptMessage($encrypted, $key, $iv){
  28.     /* Open the cipher */
  29.     $td = mcrypt_module_open('rijndael-256', '', 'ofb', '');
  30.  
  31.     /* Initialize encryption module for decryption */
  32.     mcrypt_generic_init($td, $key, $iv);
  33.  
  34.     /* Decrypt encrypted string */
  35.     $decrypted = mdecrypt_generic($td, $encrypted);
  36.  
  37.     /* Terminate decryption handle and close module */
  38.  
  39.     /* Show string */
  40.     return trim($decrypted);
  41. }
  42.  
  43. $crypt = cryptMessage('mensaje bien importante a ver si sale', 'llave importante');
  44. echo decryptMessage($crypt['crypt'], $crypt['key'], $crypt['iv']);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos