PHP实现加强版加密解密类实例
本文实例讲述了PHP实现加强版加密解密类。分享给大家供大家参考。具体如下:
<?php
classEnder{
private$enkey;//加密解密用的密钥
private$rep_char='#';
//替换加密后的base64字符串中的=,因为=在有些场合是禁止使用的,
//这里可以用一个允许的字符作为替换。
//构造参数是密钥
publicfunction__construct($key=''){
if(!$key){
$this->enkey=$key;
}
}
//设置密钥http://blog.ddian.cn
publicfunctionset_key($key){
$this->enkey=$key;
}
privatefunctionkeyED($txt,$encrypt_key)
{
$encrypt_key=md5($encrypt_key);
$ctr=0;
$tmp="";
for($i=0;$i<strlen($txt);$i++)
{
if($ctr==strlen($encrypt_key))$ctr=0;
$tmp.=substr($txt,$i,1)^substr($encrypt_key,$ctr,1);
$ctr++;
}
return$tmp;
}
//加密字符串
publicfunctionencrypt($txt,$key='')
{
if(!$key){
$key=$this->enkey;
}
srand((double)microtime()*1000000);
$encrypt_key=md5(rand(0,32000));
$ctr=0;
$tmp="";
for($i=0;$i<strlen($txt);$i++)
{
if($ctr==strlen($encrypt_key))$ctr=0;
$tmp.=substr($encrypt_key,$ctr,1).
(substr($txt,$i,1)^substr($encrypt_key,$ctr,1));
$ctr++;
}
$r=base64_encode($this->keyED($tmp,$key));
$r=str_replace('=',$this->rep_char,$r);
return$r;
}
//解密字符串
publicfunctiondecrypt($txt,$key='')
{
$txt=str_replace($this->rep_char,'=',$txt);
$txt=base64_decode($txt);
if(!$key){
$key=$this->enkey;
}
$txt=$this->keyED($txt,$key);
$tmp="";
for($i=0;$i<strlen($txt);$i++)
{
$md5=substr($txt,$i,1);
$i++;
$tmp.=(substr($txt,$i,1)^$md5);
}
return$tmp;
}
}
希望本文所述对大家的php程序设计有所帮助。