由于URL里面的信息比较重要,所以我使用了如下代码,
/* 开启加密算法/ */
$td = mcrypt_module_open('twofish', '', 'ecb', '');/* 建立 IV,并检测 key 的长度 */
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
$ks = mcrypt_enc_get_key_size($td);/* 生成 key */
$key = substr(md5('very secret key'), 0, $ks);/* 初始化加密程序 */
mcrypt_generic_init($td, $key, $iv);/* 加密, $encrypted 保存的是已经加密后的数据 */
print $encrypted = mcrypt_generic($td, 'This is very important data');/* 检测加密句柄 */
mcrypt_generic_deinit($td);/* 初始化加密模块,用以解密 */
mcrypt_generic_init($td, $key, $iv);/* 解密 */
$decrypted = mdecrypt_generic($td, $encrypted);/* 检测解密句柄,并关闭模块 */
mcrypt_generic_deinit($td);
mcrypt_module_close($td);/* 显示原始字符串 */
echo trim($decrypted)."\n";只是由于加密的参数无法传递过去,所以用base64_encode了一下,传过去再base64_decode再解密却丢失了一些数据,请问一下怎么避免这种问题

解决方案 »

  1. cvm
  2. base64_decode后的字符有=号的,用urldecode吧,如果还是要base64_decode的话,再urldecode一下吧。
    不过感觉没那个必要
      

  3. 可能是有特殊字符存在
    http://cn.php.net/mcrypt_generic
      

  4. 明天再弄弄,保存几个地址
    http://www.dedecms.com/knowledge/program/php/2009/0929/51.htmlhttp://www.ericfish.com/?q=100003http://www.jb51.net/article/17136.htm