具有時(shí)效性的php加密解密函數(shù)代碼
<?php
function encode_pass($tex,$key,$type="encode",$expiry=0){
$chrArr=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
'0','1','2','3','4','5','6','7','8','9');
if($type=="decode"){
if(strlen($tex)<14)return false;
$verity_str=substr($tex, 0,8);
$tex=substr($tex, 8);
if($verity_str!=substr(md5($tex),0,8)){
//完整性驗(yàn)證失敗
return false;
}
}
$key_b=$type=="decode"?substr($tex,0,6):$chrArr[rand()%62].$chrArr[rand()%62].$chrArr[rand()%62].$chrArr[rand()%62].$chrArr[rand()%62].$chrArr[rand()%62];
$rand_key=$key_b.$key;
//設(shè)置時(shí)間選項(xiàng)
$modnum=0;$modCount=0;$modCountStr="";
if($expiry>0){
if($type=="decode"){
$modCountStr=substr($tex,6,1);
$modCount=$modCountStr=="a"?10:floor($modCountStr);
$modnum=substr($tex,7,$modCount);
$rand_key=$rand_key.(floor((time()-$modnum)/$expiry));
}else{
$modnum=time()%$expiry;
$modCount=strlen($modnum);
$modCountStr=$modCount==10?"a":$modCount;
$rand_key=$rand_key.(floor(time()/$expiry));
}
$tex=$type=="decode"?base64_decode(substr($tex, (7+$modCount))):"xugui".$tex;
}else{
$tex=$type=="decode"?base64_decode(substr($tex, 6)):"xugui".$tex;
}
$rand_key=md5($rand_key);
$texlen=strlen($tex);
$reslutstr="";
for($i=0;$i<$texlen;$i++){
$reslutstr.=$tex{$i}^$rand_key{$i%32};
}
if($type!="decode"){
$reslutstr=trim(base64_encode($reslutstr),"==");
$reslutstr=$modCount?$modCountStr.$modnum.$reslutstr:$reslutstr;
$reslutstr=$key_b.$reslutstr;
$reslutstr=substr(md5($reslutstr), 0,8).$reslutstr;
}else{
if(substr($reslutstr,0, 5)!="xugui"){
return false;
}
$reslutstr=substr($reslutstr, 5);
}
return $reslutstr;
}
$psa=encode_pass("woshi ceshi yong de ","taintainxousad","encode",120);
echo $psa;
echo "\r\n解密:";
echo encode_pass($psa,"taintainxousad",'decode',120);
?>
- 帶密匙的php加密解密示例分享
- 一組PHP可逆加密解密算法實(shí)例代碼
- php加密算法之實(shí)現(xiàn)可逆加密算法和解密分享
- php使用base64加密解密圖片示例分享
- php的一個(gè)簡單加密解密代碼
- php加密解密實(shí)用類分享
- PHP加密擴(kuò)展庫Mcrypt安裝和實(shí)例
- php加密解密函數(shù)authcode的用法詳細(xì)解析
- PHP加密函數(shù) Javascript/Js 解密函數(shù)
- php使用異或?qū)崿F(xiàn)的加密解密實(shí)例
- php實(shí)現(xiàn)MD5加密16位(不要默認(rèn)的32位)
- php pki加密技術(shù)(openssl)詳解
- 解析如何用php screw加密php源代碼
- php_screw 1.5:php加密: 安裝與使用詳解
- 一個(gè)簡單的php加密解密函數(shù)(動態(tài)加密)
- 深入PHP數(shù)據(jù)加密詳解
- PHP寫的加密函數(shù),支持私人密鑰(詳細(xì)介紹)
- php實(shí)現(xiàn)aes加密類分享
相關(guān)文章
解析將多維數(shù)組轉(zhuǎn)換為支持curl提交的一維數(shù)組格式
本篇文章是對將多維數(shù)組轉(zhuǎn)換為支持curl提交的一維數(shù)組格式實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-07-07php實(shí)現(xiàn)httpRequest的方法
這篇文章主要介紹了php實(shí)現(xiàn)httpRequest的方法,涉及php操作http的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03PHP操作Postgresql封裝類與應(yīng)用完整實(shí)例
這篇文章主要介紹了PHP操作Postgresql封裝類,結(jié)合實(shí)例形式分析了php針對Postgresql數(shù)據(jù)庫常見的連接、查詢、統(tǒng)計(jì)等操作封裝技巧與使用方法,需要的朋友可以參考下2018-04-04php加密之discuz內(nèi)容經(jīng)典加密方式實(shí)例詳解
這篇文章主要介紹了php加密之discuz內(nèi)容經(jīng)典加密方式,結(jié)合具體實(shí)例形式詳細(xì)分析了discuz加密的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02php基于session實(shí)現(xiàn)數(shù)據(jù)庫交互的類實(shí)例
這篇文章主要介紹了php基于session實(shí)現(xiàn)數(shù)據(jù)庫交互的類,實(shí)例分析了php結(jié)合session操作數(shù)據(jù)庫的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08