以下是加密和解密函数:
function encrypt($key, $plain_text) {
$plain_text = trim($plain_text);
$iv = substr(md5($key), 0,mcrypt_get_iv_size (MCRYPT_CAST_256,MCRYPT_MODE_CFB));
$c_t = mcrypt_cfb (MCRYPT_CAST_256, $key, $plain_text, MCRYPT_ENCRYPT, $iv);
return trim(chop(base64_encode($c_t)));
}
function decrypt($key, $c_t) {
$c_t = trim(chop(base64_decode($c_t)));
$iv = substr(md5($key), 0,mcrypt_get_iv_size (MCRYPT_CAST_256,MCRYPT_MODE_CFB));
$p_t = mcrypt_cfb (MCRYPT_CAST_256, $key, $c_t, MCRYPT_DECRYPT, $iv);
return trim(chop($p_t));
}现在:
$key = "11111";
$str = "1000181";
echo decrypt($key,encrypt($key,$str));结果是100018,缺少最后一个"1“。
为什么?
发布于 2015-02-27 18:35:10
解决方案是:
从decrypt()中删除trim & chop调用
答案在评论中,作者是KiNgMaR
https://stackoverflow.com/questions/1419929
复制相似问题