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加密解密类实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!