Ho un errore veramente strano con la funzione di criptaggio e decriptaggio...

In pratica ho la necessita di criptare dei dati per poi decriptarli e utilizzarli.

Ma, in arrivo, i dati decriptati non riesco a utilizzarli.

Ho semplificato al massimo il programma per fare dei test, e il codice è questo

codice:
$key = "meakad82mdb2mndk9cKWqADr3ko7jw4z";
$vi = "93id832jdik4i20g";

$url = "p1=123&p2=456789&p3=112233445566778899";
echo "$url 
";

$url_encr = mcrypt_encrypt(MCRYPT_RIJNDAEL_128,$key, $url, MCRYPT_MODE_CBC, $vi);
$url_base64 = base64_encode($url_encr);
$url_base64_en = rawurlencode($url_base64);

//echo "Url criptata: $url_base64_en 
";

$l_urlencoded_base64_encrypted = $url_base64_en;
$l_urldecoded_base64_encrypted = rawurldecode($l_urlencoded_base64_encrypted);
$l_encrypted = base64_decode($l_urldecoded_base64_encrypted);
$l_decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128,$key, $l_encrypted, MCRYPT_MODE_CBC, $vi);

echo "$l_decrypted 
";

if($url == $l_decrypted)
echo "OK";
else
echo "KO";
Il risultato è, quantomeno, inquietante:
codice:
p1=123&p2=456789&p3=112233445566778899
p1=123&p2=456789&p3=112233445566778899
KO
KO... ovvero le due stringhe NON sono uguali, nonostante visivamente lo sembrino. le sto provando tutte, ma non ne vengo a capo