Ho fatto un test: 3 pagine semplici, posto
pagina cri.php
codice:
<?
$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);
}
?>
pagina index.php
codice:
<?
include("cri.php");
$cri = Rev_Crypt("Questa e' Una stringa crittata asdasd");
$enc = base64_encode($cri);
$f = fopen("prova.txt", "w");
fputs($f, $enc);
fclose($f);
echo "Stringa salvata: $enc (len ".strlen($enc).")
\n";
echo "Stringa crittata: ".base64_decode($enc)."(len ".strlen(base64_decode($enc)).")
\n";
echo "Stringa decrittata: ".Rev_Decrypt(base64_decode($enc))."(len ".strlen(Rev_Decrypt(base64_decode($enc))).")
\n";
echo "
Leggi
\n";
?>
pagina read.php
codice:
<?
include("cri.php");
$f = fopen("prova.txt", "r");
$enc = fgets($f);
echo "Stringa salvata: $enc (len ".strlen($enc).")
\n";
echo "Stringa crittata: ".base64_decode($enc)."(len ".strlen(base64_decode($enc)).")
\n";
echo "Stringa decrittata: ".Rev_Decrypt(base64_decode($enc))."(len ".strlen(Rev_Decrypt(base64_decode($enc))).")
\n";
fclose($f);
?>
teoricamente critta la stringa, la passa con base64, la salva su file.
Read la legge e fa il processo inverso
ma i risultati:
esecuzione di index.php
Stringa salvata: Rs1baBsfvjfbZpEc/GWv/3wnuyFSWgq1jcbbAxs3FF8rNzCUKA== (len 52)
Stringa crittata: F[h7fe|'!RZ 7_+70((len 37)
Stringa decrittata: Questa e' Una stringa crittata asdasd(len 37)
Leggi
esecuzione di read.php
Stringa salvata: Rs1baBsfvjfbZpEc/GWv/3wnuyFSWgq1jcbbAxs3FF8rNzCUKA== (len 52)
Stringa crittata: F[h7fe|'!RZ 7_+70((len 37)
Stringa decrittata: 9I!J' Una stringa crittata asdasd(len 37)
come si vede la prima parte della stringa e' decrittata in modo errato.
Non capisco cosa possa essere, vista la semplicita' dell'esempio.
Provate voi per favore?
Grazie
ciao