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


Posted in PHP onJuly 29, 2015

本文实例讲述了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安装攻略:常见问题解答(三)
Oct 09 PHP
网站用php实现paypal整合方法
Nov 28 PHP
PHP生成自定义长度随机字符串的函数分享
May 04 PHP
ThinkPHP之用户注册登录留言完整实例
Jul 22 PHP
两千行代码的PHP学习笔记汇总
Oct 05 PHP
php常用的安全过滤函数集锦
Oct 09 PHP
PHP操作文件的一些基本函数使用示例
Nov 18 PHP
深入浅出php socket编程
May 13 PHP
php+curl 发送图片处理代码分享
Jul 09 PHP
PHP模板引擎Smarty中的保留变量用法分析
Apr 11 PHP
Laravel框架中Blade模板的用法示例
Aug 30 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
Jul 10 PHP
PHP之密码加密的几种方式
Jul 29 #PHP
PHP实现仿Google分页效果的分页函数
Jul 29 #PHP
PHP如何将log信息写入服务器中的log文件
Jul 29 #PHP
再Docker中架设完整的WordPress站点全攻略
Jul 29 #PHP
php去掉文件前几行的方法
Jul 29 #PHP
PHP实现的简单网络硬盘
Jul 29 #PHP
PHP简单生成缩略图相册的方法
Jul 29 #PHP
You might like
深入理解PHP之require/include顺序 推荐
2011/01/02 PHP
php数组(array)输出的三种形式详解
2013/06/05 PHP
怎样使用php与jquery设置和读取cookies
2013/08/08 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
2014/08/28 PHP
PHP数组操作简单案例分析
2016/10/15 PHP
PHP全功能无变形图片裁剪操作类与用法示例
2017/01/10 PHP
Extjs gridpanel 出现横向滚动条问题的解决方法
2011/07/04 Javascript
jQuery选择器的工作原理和优化分析
2011/07/25 Javascript
Array 重排序方法和操作方法的简单实例
2014/01/24 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
EasyUI折叠表格层次显示detailview详解及实例
2016/12/28 Javascript
JavaScript中匿名函数的递归调用
2017/01/22 Javascript
Bootstarp 基础教程之表单部分实例代码
2017/02/03 Javascript
Vue仿手机qq的实例代码(demo)
2017/09/08 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
微信小程序实现星星评分效果
2020/11/01 Javascript
[02:23]完美世界全国高校联赛街访DOTA2第一期
2019/11/28 DOTA
selenium+python实现自动登录脚本
2018/04/22 Python
python aiohttp的使用详解
2019/06/20 Python
简单了解python装饰器原理及使用方法
2019/12/18 Python
Python中bisect的使用方法
2019/12/31 Python
在pycharm中debug 实时查看数据操作(交互式)
2020/06/09 Python
Python ellipsis 的用法详解
2020/11/20 Python
遮罩层 + Iframe实现界面自动显示的示例代码
2020/04/26 HTML / CSS
英超联赛的首选足球:Mitre足球
2019/05/06 全球购物
全球领先的中国制造商品在线批发平台:DHgate
2020/01/28 全球购物
抽象方法、抽象类怎样声明
2014/10/25 面试题
财务会计人员求职的自我评价
2014/01/13 职场文书
课前三分钟演讲稿
2014/04/24 职场文书
2014年党课学习材料
2014/05/11 职场文书
政府法律服务方案
2014/06/14 职场文书
党校学习党性分析材料
2014/12/19 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
利用Matlab绘制各类特殊图形的实例代码
2021/07/16 Python
Python编程根据字典列表相同键的值进行合并
2021/10/05 Python