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程序设计有所帮助。