php 加密 模块,一款强大的PHP 加密解密模块

* @link http://kodcloud.com/

* @author warlee | e-mail:kodcloud@qq.com

* @copyright warlee 2014.(Shanghai)Co.,Ltd

* @license http://kodcloud.com/tools/licenses/license.txt

*------

* 字符串加解密类;

* 一次一密;且定时解密有效

* 可用于加密&动态key生成

* demo:

* 加密:echo Mcrypt::encode('abc','123');

* 解密:echo Mcrypt::decode('9f843I0crjv5y0dWE_-uwzL_mZRyRb1ynjGK4I_IACQ','123');

*/classMcrypt{

private static$default_key='a!takA:dlmcldEv,e';/**

* 字符加密,一次一密,可定时解密有效

*

* @param string $string 原文

* @param string $key 密钥

* @param int $expiry 密文有效期,单位s,0 为永久有效

* @return string 加密后的内容

*/public static functionencode($string,$key='',$expiry=0){$ckeyLength=4;$key=md5($key?$key:self::$default_key);//解密密匙$keya=md5(substr($key,0,16));//做数据完整性验证$keyb=md5(substr($key,16,16));//用于变化生成的密文 (初始化向量IV)$keyc=substr(md5(microtime()), -$ckeyLength);$cryptkey=$keya.md5($keya.$keyc);$keyLength=strlen($cryptkey);$string=sprintf('%010d',$expiry?$expiry+time() :0).substr(md5($string.$keyb),0,16) .$string;$stringLength=strlen($string);$rndkey= array();

for($i=0;$i<=255;$i++) {$rndkey[$i] =ord($cryptkey[$i%$keyLength]);

}$box=range(0,255);// 打乱密匙簿,增加随机性for($j=$i=0;$i<256;$i++) {$j= ($j+$box[$i] +$rndkey[$i]) %256;$tmp=$box[$i];$box[$i] =$box[$j];$box[$j] =$tmp;

}// 加解密,从密匙簿得出密匙进行异或,再转成字符$result='';

for($a=$j=$i=0;$i

}$result=$keyc.str_replace('=','',base64_encode($result));$result=str_replace(array('+','/','='),array('-','_','.'),$result);

return$result;

}/**

* 字符解密,一次一密,可定时解密有效

*

* @param string $string 密文

* @param string $key 解密密钥

* @return string 解密后的内容

*/public static functiondecode($string,$key='')

{$string=str_replace(array('-','_','.'),array('+','/','='),$string);$ckeyLength=4;$key=md5($key?$key:self::$default_key);//解密密匙$keya=md5(substr($key,0,16));//做数据完整性验证$keyb=md5(substr($key,16,16));//用于变化生成的密文 (初始化向量IV)$keyc=substr($string,0,$ckeyLength);$cryptkey=$keya.md5($keya.$keyc);$keyLength=strlen($cryptkey);$string=base64_decode(substr($string,$ckeyLength));$stringLength=strlen($string);$rndkey= array();

for($i=0;$i<=255;$i++) {$rndkey[$i] =ord($cryptkey[$i%$keyLength]);

}$box=range(0,255);// 打乱密匙簿,增加随机性for($j=$i=0;$i<256;$i++) {$j= ($j+$box[$i] +$rndkey[$i]) %256;$tmp=$box[$i];$box[$i] =$box[$j];$box[$j] =$tmp;

}// 加解密,从密匙簿得出密匙进行异或,再转成字符$result='';

for($a=$j=$i=0;$i

}

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'';

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值