Php mcrypt在使用cbc模式时不解密所需的数据

时间:2013-05-15 17:31:38

标签: php encryption mcrypt

我有以下加密代码,但问题是它没有根据需要解密数据

$salt ='whatever_you_want';

$en= simple_encrypt('data');
echo simple_decrypt($en);
function simple_encrypt($text)
{
    global $salt;
    return trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $salt, $text, MCRYPT_MODE_CBC, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC), MCRYPT_RAND))));
}

function simple_decrypt($text)
{
    global $salt;
    return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $salt, base64_decode($text), MCRYPT_MODE_CBC, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC), MCRYPT_RAND)));
}

问题是它是加密的,每次它生成一个新的加密文本,因为我希望它发生但解密没有发生

我得到这样的东西

%B…*¥   Þ‚á+ËU:L|(øŽ«úÐ9ÇvÉêÿ¿Ïg

任何见解都会受到赞赏。)

1 个答案:

答案 0 :(得分:0)

解密时,您需要使用与加密时相同的IV和密钥。

您的加密功能需要返回IV以及加密数据。然后应该将IV与数据和密钥一起发送到解密函数。