无法在PHP中解密

无法在PHP中解密,php,mcrypt,Php,Mcrypt,我有下面的函数来加密和解密id。但是$id=298给出了�����解密后的bt 错误消息是: 无效的utf8字符串:'\x8A\xBC\x86\xFD' 我无法更改密钥,因为我有300多次使用此$key登录 function mencrypt($input,$key) { $key = substr(md5($key),0,24); $td = mcrypt_module_open ('tripledes', '', 'ecb', ''); $iv = mcrypt_cr

我有下面的函数来加密和解密id。但是
$id=298
给出了
�����解密后的bt

错误消息是:

无效的utf8字符串:'\x8A\xBC\x86\xFD'

我无法更改密钥,因为我有300多次使用此$key登录

function mencrypt($input,$key)
{
    $key = substr(md5($key),0,24);
    $td = mcrypt_module_open ('tripledes', '', 'ecb', '');
    $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
    mcrypt_generic_init ($td, $key, $iv);
    $encrypted_data = mcrypt_generic ($td, $input);
    mcrypt_generic_deinit ($td);
    mcrypt_module_close ($td);
    return trim(chop(url_base64_encode($encrypted_data)));
}
 
function mdecrypt($input,$key)
{
    $input = trim(chop(url_base64_decode($input)));
    $td = mcrypt_module_open ('tripledes', '', 'ecb', '');
    $key = substr(md5($key),0,24);
    $iv = mcrypt_create_iv (mcrypt_enc_get_iv_size ($td), MCRYPT_RAND);
    mcrypt_generic_init ($td, $key, $iv);
    $decrypted_data = mdecrypt_generic ($td, $input);
    mcrypt_generic_deinit ($td);
    mcrypt_module_close ($td);
    return trim(chop($decrypted_data));
} 

   $id = 298;
   $key ="21232F297A57A5A743894A0E4A801FC3";
   echo $encrypted_id = mencrypt($id,$key);
   echo "<br>";
   echo mdecrypt($encrypted_id,$key); 
函数mencrypt($input,$key)
{
$key=substr(md5($key),0,24);
$td=mcrypt模块打开('tripledes','','ecb','');
$iv=mcrypt\u create\u iv(mcrypt\u enc\u get\u iv\u size($td),mcrypt\u RAND);
mcrypt_generic_init($td,$key,$iv);
$encrypted_data=mcrypt_generic($td,$input);
mcrypt_generic_deinit($td);
mcrypt模块关闭($td);
返回修剪(印章(url_base64_encode($encrypted_data)));
}
函数mdecrypt($input,$key)
{
$input=trim(chop(url_base64_decode($input));
$td=mcrypt模块打开('tripledes','','ecb','');
$key=substr(md5($key),0,24);
$iv=mcrypt\u create\u iv(mcrypt\u enc\u get\u iv\u size($td),mcrypt\u RAND);
mcrypt_generic_init($td,$key,$iv);
$decrypted_data=mdecrypt_generic($td,$input);
mcrypt_generic_deinit($td);
mcrypt模块关闭($td);
返回修剪(chop($decrypted_data));
} 
$id=298;
$key=“21232F297A57A5A743894A0E4A801FC3”;
echo$encrypted\u id=mencrypt($id,$key);
回声“
”; echo mdecrypt($encrypted_id,$key);
encrypt和decrypt的
$iv
应该是相同的,但您的是randomI set$iv=12345678,用于这两个函数,但它仍然会给出一个错误。无效的utf8字符串:'\x8A\xBC\x86\xFD'