Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/01/2012, 04:55
sirchote
 
Fecha de Ingreso: julio-2010
Mensajes: 116
Antigüedad: 13 años, 9 meses
Puntos: 0
Problema con encriptacion 3des

Saludos. He encontrado el siguiente código buscando por internet cómo encriptar variables para pasarlas a otra url:
Código PHP:
/*
CONFIG
*/
define('IV''83575023'); // 8 dígitos, los que mas rabia te den
define('KEY_192''1La4IuYtRe1sin5ReyCDEFGH'); // 24 caracteres, los que mas rabia te den
/*
CONFIG
*/
function hex2bin($hex) {
$rv '';
foreach(
str_split($hex2) as $b) {
$rv .= chr(hexdec($b));
}
return 
$rv;
}
function 
decrypt($key,$iv,$algorithm,$mode,$token) {
$td mcrypt_module_open($algorithm''$mode'') ;
$iv substr($iv0mcrypt_enc_get_iv_size($td));
$expected_key_size mcrypt_enc_get_key_size($td);
$key substr($key0$expected_key_size);
mcrypt_generic_init($td$key$iv);
$response rtrim(mdecrypt_generic($td$token), '');
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return 
$response;
}
function 
encrypt($cleartext ''){
if (!
$cleartext) return NULL;
$cipher mcrypt_module_open(MCRYPT_3DES''MCRYPT_MODE_ECB'');
if (
mcrypt_generic_init($cipherKEY_192IV) != -1)
{
$cipherText mcrypt_generic($cipher,$cleartext );
mcrypt_generic_deinit($cipher);
return 
bin2hex($cipherText);
}

Tengo el siguiente problema:

En la página original, donde encripto los datos, encripto el email que quiero enviar, y luego aplico md5 al mismo email para codificarlo, y hacer una prueba de consistencia en la pagina de recepcion de datos:

Código PHP:
$cadena "[email protected]";
$cadena encrypt($cadena);
$cadena2 "[email protected]";
$cadena2 md5($cadena2);
$cadena2 encrypt($cadena2);
header ("Location: recepciondatos.php?cadena=$cadena&cadena2=$cadena2"); 
En la pagina recepciondatos.php, tengo el siguiente código:

Código PHP:

$email 
$_GET['cadena'];
$comparar $_GET['cadena2'];

$email hex2bin($email);
$email decrypt(KEY_192IV'tripledes''ecb'$email);

$comparar hex2bin($comparar);
$comparar decrypt(KEY_192IV'tripledes''ecb'$comparar);

$email2 md5($email);

if (
$email2 == $comparar)
{
    echo 
"si";
}
else
{
    echo 
"no";

El problema es que nunca detecta que sean iguales.

He probado de asignar a una variable el valor [email protected] y compararlo con los datos de $email, que supuestamente, deberían ser iguales, pero me dice que son distintos.

si muestro $email por pantalla, me da como valor [email protected]

Se debe a algún tipo de variación por la codificación o algo parecido?


Gracias