实用的PHP带公钥加密类分享(每次加密结果都不一样哦)

WEB交互安全一直是个各大网站的首要解决方案,本文介绍的php加密类非常实用哦,带有公钥,这是最大的亮点,没有公钥是不能解密的,加密度非常高。

类代码:

<?php/** * php加密类 * 琼台博客 */class Jiami{  // 公钥  protected $key = 'lee';   private function keyED($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;  }   public function encrypt($txt,$key=''){    if(empty($key)){      $key=$this->key;    }    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++;    }    return $this->keyED($tmp,$key);  }   public function decrypt($txt,$key=''){    if(empty($key)){      $key=$this->key;    }     $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;  }   public function setKey($key){    if(empty($key)){      return null;    }    $this->key=$key;  }   public function getPK(){    return $this->key;  } }

使用方法:

<?php// 先包含加密类require_once('jiami.class.php'); // 要加密的字符串$string = 'http://www.jb51.NET'; // 实例化加密类$jiami= new Jiami(); // 设置公钥$jiami->setKey('qttc'); // 加密字符串$enc = $jiami->encrypt($string,$jiami->getPK()); // 解密字符串$dec = $jiami->decrypt($enc,$jiami->getPK()); echo '<meta charset="utf-8" />';echo '加密前 : '.$string .'<br/>';echo '加密后 : '.$enc .'<br/>';echo '解密后 : '.$dec;?>

页面执行结果

结果1:

结果2:

由以上结果可以看到,每次加密产生的加密字符串都不一样,这是随机的。
解密的时候,需要使用加密时的公钥,否则无法解密。如你这边加密公钥使用‘qttc',解密的时候,也需要使用这个'qttc'作为公钥去解密,否则无法解密。

php技术实用的PHP带公钥加密类分享(每次加密结果都不一样哦),转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。