2
有人可以帮我这个:
PHP - Mcrypt的结果不同于解密?
当我尝试mcryp 253|[email protected]
..然后解密输出..它返回253|[email protected]��o{�
奇怪的事情:当我改变任何给定的字符,输出总是与一个奇怪的字符..除..如果我只是添加一个字符或删除一个..输出是好的..
这怎么可能?
function url_base64_decode($str){
return base64_decode(strtr($str,
array(
'.' => '+',
'-' => '=',
'~' => '/'
)
));
}
function url_base64_encode($str){
return strtr(base64_encode($str),
array(
'+' => '.',
'=' => '-',
'/' => '~'
)
);
}
function mdecrypt($input){
$key = '4oF9B2N_WXbmvIC5nNLLTbnmr5knkEBNBcrJt9m3xM3kjFyCZc3QAZbolXoCHO3g';
$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));
}
function mencrypt($input) {
$key = '4oF9B2N_WXbmvIC5nNLLTbnmr5knkEBNBcrJt9m3xM3kjFyCZc3QAZbolXoCHO3g';
$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)));
}
$str = mencrypt('253|[email protected]'); // oCaWMrNIAX6wCS.HSlvFGspMLauXaSyAE.ze7j9q4Qk-
echo mdecrypt($str);
你今天是我的英雄! – VyseExhale
你愿意接受答案吗? – pregmatch
Oopz对不起!接受它! – VyseExhale