关于博客留言列表里直接显示了用户邮箱的BUG,利用了一点时间,再百度上找到了一个PHP对字符串变量加密与解密的方法,直接整理一下拿过来用了,测试可行,至于后期稳定性和安全性如何,慢慢体验再说。顺手整理了一下,分享给大家!
具体的代码:
/*
*功能:对字符串进行加密处理
*参数一:需要加密的内容
*参数二:密钥
*/
$key_mi='123456';  //自己设置的密钥
function passport_encrypt($str,$key){ //加密函数
    srand((double)microtime() * 1000000);
    $encrypt_key=md5(rand(0, 32000));
    $ctr=0;
    $tmp='';
    for($i=0;$i<strlen($str);$i++){
        $ctr=$ctr==strlen($encrypt_key)?0:$ctr;
        $tmp.=$encrypt_key[$ctr].($str[$i] ^ $encrypt_key[$ctr++]);
    }
    return base64_encode(passport_key($tmp,$key));
}
/*
*功能:对字符串进行解密处理
*参数一:需要解密的密文
*参数二:密钥
*/
function passport_decrypt($str,$key){ //解密函数
    $str=passport_key(base64_decode($str),$key);
    $tmp='';
    for($i=0;$i<strlen($str);$i++){
        $md5=$str[$i];
        $tmp.=$str[++$i] ^ $md5;
    }
    return $tmp;
}
 
 
/*
*辅助函数
*/
function passport_key($str,$encrypt_key){
    $encrypt_key=md5($encrypt_key);
    $ctr=0;
    $tmp='';
    for($i=0;$i<strlen($str);$i++){
        $ctr=$ctr==strlen($encrypt_key)?0:$ctr;
        $tmp.=$str[$i] ^ $encrypt_key[$ctr++];
    }
    return $tmp;
}
//调用方法(加密):
//passport_encrypt(需加密的字符串,$key_mi);
//调用方法(解密):
//passport_decrypt(需解密的字符串,$key_mi);
实际使用示例:
$a='mdaima'; echo "原字符串:".$a."</br>"; $jiami=passport_encrypt($a,$key_mi); echo "加密后字符串:".$jiami."</br>"; echo "解密后字符串:".passport_decrypt($jiami,$key_mi)."</br>";
输出结果:
原字符串:maopiaopiao 加密后字符串:VG1TZgFnUjEGZlAy 解密后字符串:maopiaopiao
说明:因加入了时间戳函数,所以加密后的字符串是动态发生变化的。