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 相关文章推荐
apache rewrite_module模块使用教程
Jan 10 PHP
php学习之 数组声明
Jun 09 PHP
PHP动态创建Web站点的方法
Aug 14 PHP
PHP 动态生成静态HTML页面示例代码
Jan 15 PHP
PHP使用glob函数遍历目录或文件夹的方法
Dec 16 PHP
PHP SPL标准库之接口(Interface)详解
May 11 PHP
php中switch语句用法详解
Aug 17 PHP
thinkphp3.x中cookie方法的用法分析
May 19 PHP
PHP编程计算文件或数组中单词出现频率的方法
May 22 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
Jan 20 PHP
php中错误处理操作实例分析
Aug 23 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
Sep 30 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 什么是PEAR?(第三篇)
2009/03/19 PHP
邮箱正则表达式实现代码(针对php)
2013/06/21 PHP
PHP实现中国公民身份证号码有效性验证示例代码
2017/05/03 PHP
jQuery实现下拉框左右选择的简单实例
2014/02/22 Javascript
jQuery实现瀑布流布局详解(PC和移动端)
2020/09/01 Javascript
node.js从数据库获取数据
2016/05/08 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
2017/02/17 Javascript
利用node.js搭建简单web服务器的方法教程
2017/02/20 Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
2017/03/08 Javascript
Node.js学习之查询字符串解析querystring详解
2017/09/28 Javascript
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
angular-tree-component的使用详解
2018/07/30 Javascript
Vue核心概念Getter的使用方法
2019/01/18 Javascript
Node.js 在本地生成日志文件的方法
2020/02/07 Javascript
Vue组件简易模拟实现购物车
2020/12/21 Vue.js
python根据日期返回星期几的方法
2015/07/06 Python
在Django的视图(View)外使用Session的方法
2015/07/23 Python
浅谈python中列表、字符串、字典的常用操作
2017/09/19 Python
python通过微信发送邮件实现电脑关机
2018/06/20 Python
Python docx库用法示例分析
2019/02/16 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
2019/08/24 Python
opencv设置采集视频分辨率方式
2019/12/10 Python
keras K.function获取某层的输出操作
2020/06/29 Python
CSS3动画之流彩文字效果+图片模糊效果+边框伸展效果实现代码合集
2017/08/18 HTML / CSS
详解HTML5中的拖放事件(Drag 和 drop)
2016/11/14 HTML / CSS
AutoShack.com加拿大:北美主要的汽车零部件零售商
2019/07/24 全球购物
合伙经营协议书
2014/04/18 职场文书
毕业生应聘求职信
2014/07/10 职场文书
2014党员学习《反腐倡廉警示教育读本》思想汇报
2014/09/13 职场文书
2015年领导干部廉洁自律工作总结
2015/05/26 职场文书
绿里奇迹观后感
2015/06/15 职场文书
小学三年级语文教学反思
2016/03/03 职场文书
Nginx反向代理学习实例教程
2021/10/24 Servers
什么是动态刷新率DRR? Windows11动态刷新率功能介绍
2021/11/21 数码科技