Hola!
Ho un problema con mcrypt. Premetto che sto usando mcrypt_crypt e _decrypt, senza dover fare open e close.

Ho fatto questo
codice:
file crittatura.php

<?
	$key = "Chiave assai sicura";

	$iv_size = mcrypt_get_iv_size(MCRYPT_XTEA, MCRYPT_MODE_CFB);
	$iv = mcrypt_create_iv($iv_size, MCRYPT_DEV_RANDOM);

	$ksize = mcrypt_get_key_size('xtea', 'cfb');
	$key = substr(md5($key), 0, $ksize);

	function Rev_Crypt($text)
	{
		global $key, $iv;
		return mcrypt_encrypt(MCRYPT_XTEA, $key, $text, MCRYPT_MODE_CFB, $iv);
	}

	function Rev_Decrypt($enc)
	{
		global $key, $iv;
		return mcrypt_decrypt(MCRYPT_XTEA, $key, $enc, MCRYPT_MODE_CFB, $iv);
	} 
?>
Il problema e' questo:
Nella pagina A faccio questo:
codice:
include("crittatura.php");
$txt = "Testo da crittare";
$cri = Rev_Crypt($txt);
$unc = Rev_Decrypt($cri);
e noto che $tct e $unc sono uguali, e fin qui giusto

Poi metto $cri in un database.
Nella pagina B faccio
codice:
include("crittatura.php");
$cont = Preleva_da_database();
$unc = Rev_Decrypt($cont);
ma $unc della pagina B e' una serie di cose senza senso

Facendo due verifiche vi garantisco che:
1. il database immagazzina la stringa crittata correttamente, e la restituisce correttamente

2. La chiave $key nella pagina A e B coincidono, ma non e' cosi' per $iv, suppongo sia normale

3. La stringa decrittata $unc della pagina B e' sempre diversa

Ho provato anche il metodo "open-close" (e tutta la pappardella che c'e' attorno, come da manuale), ma il risultato e' lo stesso: incomprensibile.

Dove sbaglio? :master:
Grazie