关于博客留言列表里直接显示了用户邮箱的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
说明:因加入了时间戳函数,所以加密后的字符串是动态发生变化的。