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($hex, 2) as $b) {
$rv .= chr(hexdec($b));
}
return $rv;
}
function decrypt($key,$iv,$algorithm,$mode,$token) {
$td = mcrypt_module_open($algorithm, '', $mode, '') ;
$iv = substr($iv, 0, mcrypt_enc_get_iv_size($td));
$expected_key_size = mcrypt_enc_get_key_size($td);
$key = substr($key, 0, $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($cipher, KEY_192, IV) != -1)
{
$cipherText = mcrypt_generic($cipher,$cleartext );
mcrypt_generic_deinit($cipher);
return bin2hex($cipherText);
}
}
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");
Código PHP:
$email = $_GET['cadena'];
$comparar = $_GET['cadena2'];
$email = hex2bin($email);
$email = decrypt(KEY_192, IV, 'tripledes', 'ecb', $email);
$comparar = hex2bin($comparar);
$comparar = decrypt(KEY_192, IV, 'tripledes', 'ecb', $comparar);
$email2 = md5($email);
if ($email2 == $comparar)
{
echo "si";
}
else
{
echo "no";
}
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