function encryptCookie($value){
   if(!$value){return false;}
   $key = 'paxospass1234!';
   $text = $value;
   $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
   $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
   $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
   return trim(base64_encode($crypttext)); //encode for cookie
}
$str="hello world,this is a test";
$s=encryptCookie($str);到这一步,,我要在$s中解密出来,,求函数

解决方案 »

  1.   

    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);MCRYPT_RAND这是一个随机数,不可能逆运算的
      

  2.   

    俺都是明文。从网上找一个“Php Mcrypt 加密解密“改写一下好了。
      

  3.   

    function decryptCookie($value){
       if(!$value){return false;}
       $value = base64_decode($value);
       $key = 'paxospass1234!';
       $text = $value;
       $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
       $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
       $decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
       return $decrypttext;
    }
      

  4.   

    ECB比较原始,高级一点的CBC模式需要相同$iv,且会根据iv生成随机的密文。
    /** CBC **/
    function encryptCookie($value){
       if(!$value){return false;}
       $key = 'paxospass1234!';
       $text = $value;
       $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
       $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
       $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_CBC, $iv);
       return array(trim(base64_encode($crypttext)),$iv); //encode for cookie
    }
    function decryptCookie($value,$iv){
       if(!$value){return false;}
       $value = base64_decode($value);
       $key = 'paxospass1234!';
       $text = $value;
      // $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
      // $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
       $decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_CBC, $iv);
       return $decrypttext;
    }
    $str="this is for encry";
    $s=encryptCookie($str);
    echo $s[0]."<br/>";
    echo decryptCookie($s[0],$s[1]);
      

  5.   

    汗一个,MCRYPT_RAND这个不是随机数吗??
      

  6.   

    $iv对ECB模式是没用的
    详见
    http://zh.wikipedia.org/wiki/%E5%9D%97%E5%AF%86%E7%A0%81%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%A8%A1%E5%BC%8F
      

  7.   

    #4楼正解,只要base64_encode()和base64_decode()、mcrypt_encrypt()和mcrypt_decrypt()对应上就行了。
    其中除了decode的解密内容是encode的加密内容外,其他参数都一样。