方法1:(尚未测试)
<?phpfunction passport_encrypt($txt, $key = 'www.h2sheji.com') { srand((double)microtime() * 1000000); $encrypt_key = md5(rand(0, 32000)); $ctr = 0; $tmp = ''; for($i = 0;$i < strlen($txt); $i++) { $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr; $tmp .= $encrypt_key[$ctr].($txt[$i] ^ $encrypt_key[$ctr++]); } return urlencode(base64_encode(passport_key($tmp, $key))); } function passport_decrypt($txt, $key = 'www.h2sheji.com') { $txt = passport_key(base64_decode(urldecode($txt)), $key); $tmp = ''; for($i = 0;$i < strlen($txt); $i++) { $md5 = $txt[$i]; $tmp .= $txt[++$i] ^ $md5; } return $tmp; } function passport_key($txt, $encrypt_key) { $encrypt_key = md5($encrypt_key); $ctr = 0; $tmp = ''; for($i = 0; $i < strlen($txt); $i++) { $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr; $tmp .= $txt[$i] ^ $encrypt_key[$ctr++]; } return $tmp; } ?>
用法:
<?php $txt = "1"; $key = "testkey"; $encrypt = passport_encrypt($txt,$key); $decrypt = passport_decrypt($encrypt,$key); echo $encrypt."<br>"; echo $decrypt."<br>"; ?>
方法2:简单的对称加密
header("content-type:text/html;charset=utf-8"); /** *@param $string目标字符串 *@param $key 加密key *@return string */ function encryption($string="",$key="cxphp"){ //str_split把字符串分割到数组中 $strArr = str_split(base64_encode($string)); $strcount = count($strArr); foreach(str_split($key) as $key=>$value){ $key < $strcount && $strArr[$key].= $value; return str_replace(array('=','+','1'), array('O0O0O', 'o000o', 'oo00o'), join($strArr)); } } /** *@param $string 解析字符串 *@param $key 揭秘到key *@return string */ function deciphering($string='',$skey='cxphp'){ $strArr = str_split(str_replace(array('O0O0O', 'o000o', 'oo00o'), array('=', '+', '/'), $string), 2); $strCount = count($strArr); foreach (str_split($skey) as $key => $value) $key <= $strCount && @$strArr[$key][1] === $value && $strArr[$key] = $strArr[$key][0]; return base64_decode(join($strArr)); } $a = encryption('这是我的一条测试数据'); var_dump($a); $a = '6cLo000oZ5piv5oiR55qE5LiA5p2h5rWL6Ko000oV5pWw5o2u'; $b = deciphering($a); var_dump($b);
方法3:
/********************************************************************* 函数名称:encrypt 函数作用:加密解密字符串 使用方法: 加密 :encrypt('str','E','qingdou'); 解密 :encrypt('被加密过的字符串','D','qingdou'); 参数说明: $string :需要加密解密的字符串 $operation:判断是加密还是解密:E:加密 D:解密 $key :加密的钥匙(密匙); *********************************************************************/ function encrypt($string,$operation,$key='') { $src = array("/","+","="); $dist = array("_a","_b","_c"); if($operation=='D'){$string = str_replace($dist,$src,$string);} $key=md5($key); $key_length=strlen($key); $string=$operation=='D'?base64_decode($string):substr(md5($string.$key),0,8).$string; $string_length=strlen($string); $rndkey=$box=array(); $result=''; for($i=0;$i<=255;$i++) { $rndkey[$i]=ord($key[$i%$key_length]); $box[$i]=$i; } for($j=$i=0;$i<256;$i++) { $j=($j+$box[$i]+$rndkey[$i])%256; $tmp=$box[$i]; $box[$i]=$box[$j]; $box[$j]=$tmp; } for($a=$j=$i=0;$i<$string_length;$i++) { $a=($a+1)%256; $j=($j+$box[$a])%256; $tmp=$box[$a]; $box[$a]=$box[$j]; $box[$j]=$tmp; $result.=chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256])); } if($operation=='D') { if(substr($result,0,8)==substr(md5(substr($result,8).$key),0,8)) { return substr($result,8); } else { return''; } } else { $rdate = str_replace('=','',base64_encode($result)); $rdate = str_replace($src,$dist,$rdate); return $rdate; } }
用法:
echo '加密1:'.encrypt('待加密内容', 'E', 'H2sheji氢设计'); echo '解密1:'.encrypt('密文待解密', 'D', 'H2sheji氢设计');
版权声明
1.本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行测试。
2.本站资源仅供学习和交流使用,版权归资源原作者所有,请在下载后24小时之内自觉删除。
3.若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,与本站无关。
4.若内容涉及侵权或违法信息,请联系本站管理员进行下架处理,邮箱ganice520@163.com(本站不支持其他投诉反馈渠道,谢谢合作)
- 上一篇: python脚本之借助树莓派24小时刷访问量
- 下一篇: 遍历php数组的几种方法
发表评论