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初学者头痛的十四个问题
Jul 12 PHP
php 生成文字png图片的代码
Apr 17 PHP
php 冒泡排序 交换排序法
May 10 PHP
php设计模式 Composite (组合模式)
Jun 26 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
Aug 11 PHP
PHP得到某段时间区间的时间戳 php定时任务
Apr 12 PHP
PHP中使用数组指针函数操作数组示例
Nov 19 PHP
CentOS下PHP安装Oracle扩展
Feb 15 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
Jan 28 PHP
php自定义截取中文字符串-utf8版
Feb 27 PHP
如何在PHP中使用AES加密算法加密数据
Jun 24 PHP
详解php中流行的rpc框架
May 29 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执行速度全攻略(上)
2006/10/09 PHP
浅谈PHP中单引号和双引号到底有啥区别呢?
2015/03/04 PHP
PHP读取txt文本文件并分页显示的方法
2015/03/11 PHP
如何解决PHP无法实现多线程的问题
2015/09/25 PHP
Yii框架组件和事件行为管理详解
2016/05/20 PHP
PHP多进程编程实例详解
2017/07/19 PHP
实例说明js脚本语言和php脚本语言的区别
2019/04/04 PHP
javascript div 弹出可拖动窗口
2009/02/26 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
jquery中使用循环下拉菜单示例代码
2014/09/24 Javascript
详解AngularJS Filter(过滤器)用法
2015/12/28 Javascript
JS集成fckeditor及判断内容是否为空的方法
2016/05/27 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
2017/07/17 jQuery
利用JQUERY实现多个AJAX请求等待的实例
2017/12/14 jQuery
vue如何在自定义组件中使用v-model
2018/05/14 Javascript
详解vue+webpack+express中间件接口使用
2018/07/17 Javascript
Vue实现简易翻页效果源码分享
2018/11/08 Javascript
如何构建一个Vue插件并生成npm包
2020/10/26 Javascript
python选择排序算法的实现代码
2013/11/21 Python
跟老齐学Python之一个免费的实验室
2014/09/14 Python
Python中操作符重载用法分析
2016/04/29 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
2017/01/24 Python
用virtualenv建立多个Python独立虚拟开发环境
2017/07/06 Python
解析Python中的eval()、exec()及其相关函数
2017/12/20 Python
python实现微信发送邮件关闭电脑功能
2018/02/22 Python
django中的图片验证码功能
2019/09/18 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
在python中修改.properties文件的操作
2020/04/08 Python
HTML5中的websocket实现直播功能
2018/05/21 HTML / CSS
德国内衣、泳装和睡衣网上商店:Bigsize Dessous
2018/07/09 全球购物
一套Java笔试题
2016/08/20 面试题
二手书店创业计划书
2014/01/16 职场文书
动漫专业高职生职业生涯规划书
2014/02/15 职场文书
《纸船和风筝》教学反思
2014/02/15 职场文书
利群广告词
2014/03/20 职场文书
导游词之白茶谷九龙峡
2019/10/23 职场文书