PHP加密解密类实例分析
本文实例讲述了PHP加密解密类。分享给大家供大家参考。具体分析如下:
这段代码支持数组加密,密文有效期,各种对称加密
其中参数如下:
*@useption::en($string,$key);
*@paramString$string需要加密的字串
*@paramString$skey密钥
*@paramint$expiry密文有效期,加密时候有效,单位秒,0为永久有效
*@returnString
1.php代码如下:
/* *-工具库-加密解密码 */ classption { privatestatic$original=array('=','+','/'); privatestatic$later=array('O0O0O','o0O0o','oo00o'); function__construct() { } privatestaticfunctionmd5($skey='') { $skey=$skey?$skey:'ui';//uicms::_config('security/authkey'); returnmd5(substr($skey,0,16)); } /** *@useption::en($string,$key); *@paramString$string需要加密的字串 *@paramString$skey密钥 *@paramint$expiry密文有效期,加密时候有效,单位秒,0为永久有效 *@returnString */ staticpublicfunctionen($string='',$skey='',$expiry=0) { if(is_array($string)) { $string=json_encode($string);//uicms::json($string,true,'en'); } $string=str_pad($expiry?$expiry+TIME:0,10,0).$string; $strArr=str_split(base64_encode($string)); $strCount=count($strArr); $skey=static::md5($skey); foreach(str_split($skey)as$key=>$value) { $key<$strCount&&$strArr[$key].=$value; } returnstr_replace(self::$original,self::$later,join('',$strArr)); } /** *@useption::de($string,$key); *@paramString$string需要解密的字串 *@paramString$skey密钥 *@returnString */ staticpublicfunctionde($string='',$skey='') { $strArr=str_split(str_replace(self::$later,self::$original,$string),2); $strCount=count($strArr); $skey=static::md5($skey); foreach(str_split($skey)as$key=>$value) { $key<$strCount&&$strArr[$key][1]===$value&&$strArr[$key]=$strArr[$key][0]; } $result=base64_decode(join('',$strArr)); if(substr($result,0,10)==0||substr($result,0,10)-TIME>0) { returnsubstr($result,10); } else { returnfalse; } } }
2.用法如下:
$str['username']='oschina'; $str['pw']='123456'; $str['huoxin']='!@#$%^&'; echo"string:".$str."<br/>"; echo"encode:".($enstring=ption::en($str)).'<br/>'; echo"decode:".ption::de($enstring);
希望本文所述对大家的php程序设计有所帮助。