PHP加密解密类实例代码
关键代码如下所示:
<?php
functioni_array_column($input,$columnKey,$indexKey=null){
if(!function_exists('array_column')){
$columnKeyIsNumber=(is_numeric($columnKey))?true:false;
$indexKeyIsNull=(is_null($indexKey))?true:false;
$indexKeyIsNumber=(is_numeric($indexKey))?true:false;
$result=array();
foreach((array)$inputas$key=>$row){
if($columnKeyIsNumber){
$tmp=array_slice($row,$columnKey,1);
$tmp=(is_array($tmp)&&!empty($tmp))?current($tmp):null;
}else{
$tmp=isset($row[$columnKey])?$row[$columnKey]:null;
}
if(!$indexKeyIsNull){
if($indexKeyIsNumber){
$key=array_slice($row,$indexKey,1);
$key=(is_array($key)&&!empty($key))?current($key):null;
$key=is_null($key)?0:$key;
}else{
$key=isset($row[$indexKey])?$row[$indexKey]:0;
}
}
$result[$key]=$tmp;
}
return$result;
}else{
returnarray_column($input,$columnKey,$indexKey);
}
}
functionrandcode($len,$mode=2){
$rcode='';
switch($mode){
case1://去除0、o、O、l等易混淆字符
$chars='ABCDEFGHJKLMNPQRSTUVWXYZ23456789abcdefghijkmnpqrstuvwxyz';
break;
case2://纯数字
$chars='0123456789';
break;
case3://全数字+大小写字母
$chars='ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
break;
case4://全数字+大小写字母+一些特殊字符
$chars='ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz~!@#$%^&*()';
break;
}
$count=strlen($chars)-1;
mt_srand((double)microtime()*1000000);
for($i=0;$i<$len;$i++){
$rcode.=$chars[mt_rand(0,$count)];
}
return$rcode;
}
/**
*$string明文或密文
*$operation加密ENCODE或解密DECODE
*$key密钥
*$expiry密钥有效期
*/
functionauthcode($string,$operation='DECODE',$key='',$expiry=0){
$ckey_length=4;
$key=md5($key);
$keya=md5(substr($key,0,16));
$keyb=md5(substr($key,16,16));
$keyc=$ckey_length?($operation=='DECODE'?substr($string,0,$ckey_length):substr(md5(microtime()),-$ckey_length)):'';
$cryptkey=$keya.md5($keya.$keyc);
$key_length=strlen($cryptkey);
$string=$operation=='DECODE'?base64_decode(substr($string,$ckey_length)):sprintf('%010d',$expiry?$expiry+time():0).substr(md5($string.$keyb),0,16).$string;
$string_length=strlen($string);
$result='';
$box=range(0,255);
$rndkey=array();
for($i=0;$i<=255;$i++){
$rndkey[$i]=ord($cryptkey[$i%$key_length]);
}
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=='DECODE'){
if((substr($result,0,10)==0||substr($result,0,10)-time()>0)&&substr($result,10,16)==substr(md5(substr($result,26).$keyb),0,16)){
returnsubstr($result,26);
}else{
return'';
}
}else{
return$keyc.str_replace('=','',base64_encode($result));
}
}
以上所述是小编给大家介绍的PHP加密解密类实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!