PHP实现加强版加密解密类实例

 更新时间:2015年07月29日 10:57:58   作者:DDIAN  
这篇文章主要介绍了PHP实现加强版加密解密类,实例分析了php加密解密的相关实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了PHP实现加强版加密解密类。分享给大家供大家参考。具体如下:

<?php
class Ender{
  private $enkey;//加密解密用的密钥
  private $rep_char='#';
  //替换加密后的base64字符串中的=,因为=在有些场合是禁止使用的,
  //这里可以用一个允许的字符作为替换。
  //构造参数是密钥
  public function __construct($key=''){
    if(!$key){
      $this->enkey=$key;
    }
  }
  //设置密钥http://blog.ddian.cn
  public function set_key($key){
    $this->enkey=$key;
  }
  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(!$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; 
  }
  //解密字符串
  public function decrypt($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程序设计有所帮助。

相关文章

  • PHP按指定键值对二维数组进行排序的方法

    PHP按指定键值对二维数组进行排序的方法

    这篇文章主要介绍了PHP按指定键值对二维数组进行排序的方法,涉及PHP二维数组的遍历及array_multisort函数的使用技巧,需要的朋友可以参考下
    2015-12-12
  • php ImageMagick windows下安装教程

    php ImageMagick windows下安装教程

    这篇文章主要介绍了php ImageMagick windows下安装教程,本文详细讲解了windows下安装ImageMagick的步骤、包括下载、安装、扩展安装、测试等步骤,需要的朋友可以参考下
    2015-01-01
  • 理解php Hash函数,增强密码安全

    理解php Hash函数,增强密码安全

    服务器和数据库的资料偶尔会被窃取,因此需要保证发生这种情况时一些重要的用户数据,比如密码,是别人无法获取的。这里我们将要讨论Hash的原理,以及它是如何保护Web应用程序中的密码安全的。
    2011-02-02
  • PHP性能优化大全(php.ini)

    PHP性能优化大全(php.ini)

    这篇文章主要介绍了PHP性能优化大全(php.ini),需要的朋友可以参考下
    2016-05-05
  • php实现微信公众平台账号自定义菜单类

    php实现微信公众平台账号自定义菜单类

    这篇文章主要介绍了php实现微信公众平台账号自定义菜单类的方法,涉及针对微信接口API的二次开发,是非常实用的技巧,需要的朋友可以参考下
    2014-12-12
  • php遍历解析xml字符串的方法

    php遍历解析xml字符串的方法

    这篇文章主要介绍了php遍历解析xml字符串的方法,涉及php基于SimpleXMLElement类实现对xml文件的读取、遍历与解析的相关技巧,非常简单实用,需要的朋友可以参考下
    2016-05-05
  • PHP常用的三种设计模式

    PHP常用的三种设计模式

    本文为大家介绍常用的三种php设计模式:单例模式、工厂模式、观察者模式,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析

    php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法实例分析

    这篇文章主要介绍了php加速缓存器opcache,apc,xcache,eAccelerator原理与配置方法,结合实例形式分析了php加速缓存器opcache,apc,xcache,eAccelerator的基本功能、原理及扩展配置相关操作技巧,需要的朋友可以参考下
    2020-03-03
  • php简单获取文件扩展名的方法

    php简单获取文件扩展名的方法

    这篇文章主要介绍了php简单获取文件扩展名的方法,实例分析了php获取文件扩展名的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题

    PHP数组的交集array_intersect(),array_intersect_assoc(),array_inte

    求两个数组的交集问题可以使用array_intersect(),array_inersect_assoc,array_intersect_key来实现,其中array_intersect()函数是求两个数的交集
    2011-05-05

最新评论