try catch没有按预期提供输出

时间:2014-02-14 05:01:44

标签: php encryption try-catch

您好我使用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_-+=');

enter image description here

1 个答案:

答案 0 :(得分:0)

尝试抛出异常并查看代码有什么问题,然后就可以解决问题了。

在您的条件中尝试:print_r(error_get_last());