您好我使用2个函数进行加密和解密
我的解密功能如下
function decrypt($string, $key = NULL) {
// $key = 'this is new thign gor security';
$string = base64_decode(base64_decode($string));
$key = md5($key); //to improve variance
/* Open module, and create IV */
$td = mcrypt_module_open('des', '', 'cfb', '');
$key = substr($key, 0, mcrypt_enc_get_key_size($td));
$iv_size = mcrypt_enc_get_iv_size($td);
$iv = substr($string, 0, $iv_size);
$string = substr($string, $iv_size);
/* Initialize encryption handle */
if (mcrypt_generic_init($td, $key, $iv) != -1) {
/* Encrypt data */
$c_t = mdecrypt_generic($td, $string);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $c_t;
} //end if
}
但是在这个函数中,如果我传递的字符串实际上并不是加密,那么它会给我注意未定义的变量并且不提供任何输出,这就是为什么我将try catch blog添加到它中如下所示
function decrypt($string, $key = NULL)
{
try
{
$string = base64_decode(base64_decode($string));
$key = md5($key); //to improve variance
/* Open module, and create IV */
$td = mcrypt_module_open('des', '', 'cfb', '');
$key = substr($key, 0, mcrypt_enc_get_key_size($td));
$iv_size = mcrypt_enc_get_iv_size($td);
$iv = substr($string, 0, $iv_size);
$string = substr($string, $iv_size);
/* Initialize encryption handle */
if (mcrypt_generic_init($td, $key, $iv) != -1)
{
/* Encrypt data */
$c_t = mdecrypt_generic($td, $string);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $c_t;
} //end if
} catch (Exception $exc)
{
echo $exc->getTraceAsString();
}
// $key = 'this is new thign gor security';
}
但是它在同一点再次结构,并没有去捕捉
这里我放了一些字符串和Key
encrypted string: dExXZStvRmV6WFR5NkE9PQ==
and KEY is : !1@2#3$4%5^6&7*8(9)0_-+=
您可以使用此功能
$xyz = decrypt('dExXZStvRmV6WFR5NkE9PQ==','!1@2#3$4%5^6&7*8(9)0_-+=');
答案 0 :(得分:0)
尝试抛出异常并查看代码有什么问题,然后就可以解决问题了。
在您的条件中尝试:print_r(error_get_last());