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 相关文章推荐
phpMyAdmin2.11.6安装配置方法
Aug 24 PHP
php对mongodb的扩展(初出茅庐)
Nov 11 PHP
PHP获取本周第一天和最后一天示例代码
Feb 24 PHP
2014年10个最佳的PHP图像操作库
Jul 14 PHP
PHP中调用SVN命令更新网站方法
Jan 07 PHP
Yii2增加验证码步骤详解
Apr 25 PHP
php中通过eval实现字符串格式的计算公式
Mar 18 PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 PHP
浅谈Laravel队列实现原理解决问题记录
Aug 19 PHP
thinkphp集成前端脚手架Vue-cli的教程图解
Aug 30 PHP
PHP通过get方法获得form表单数据方法总结
Sep 12 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
Apr 04 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使用file函数、fseek函数读取大文件效率对比分析
2016/11/04 PHP
php使用fullcalendar日历插件详解
2019/03/06 PHP
可以用来调试JavaScript错误的解决方案
2010/08/07 Javascript
基于jquery插件制作左右按钮与标题文字图片切换效果
2013/11/07 Javascript
详解JavaScript编程中的数组结构
2015/10/24 Javascript
使用three.js 画渐变的直线
2016/06/05 Javascript
Select下拉框模糊查询功能实现代码
2016/07/22 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
2016/12/20 Javascript
ES5 ES6中Array对象去除重复项的方法总结
2017/04/27 Javascript
JavaScript之promise_动力节点Java学院整理
2017/07/03 Javascript
nodejs使用redis作为缓存介质实现的封装缓存类示例
2018/02/07 NodeJs
d3.js实现自定义多y轴折线图的示例代码
2018/05/30 Javascript
vue框架搭建之axios使用教程
2018/07/11 Javascript
NodeJs生成sitemap站点地图的方法示例
2019/06/11 NodeJs
微信小程序tabBar 返回tabBar不刷新页面
2019/07/25 Javascript
Vue项目打包压缩的实现(让页面更快响应)
2020/03/10 Javascript
vue实现户籍管理系统
2020/05/29 Javascript
Node.js 中如何收集和解析命令行参数
2021/01/08 Javascript
[01:11:48]Fnatic vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python下的twisted框架入门指引
2015/04/15 Python
python针对excel的操作技巧
2018/03/13 Python
python opencv实现图像边缘检测
2019/04/29 Python
Python实现FM算法解析
2019/06/18 Python
python3.6编写的单元测试示例
2019/08/17 Python
Python调用graphviz绘制结构化图形网络示例
2019/11/22 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
2020/01/10 Python
python线程优先级队列知识点总结
2021/02/28 Python
有趣的流行文化T恤、马克杯、手机壳和更多:Look Human
2019/01/07 全球购物
Luxplus荷兰:以会员价购买美容产品等,独家优惠
2019/08/30 全球购物
4s店市场专员岗位职责
2014/04/09 职场文书
走群众路线剖析材料
2014/10/09 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
入队仪式主持词
2015/07/04 职场文书
给校长的建议书范文
2015/09/14 职场文书
基于Redis6.2.6版本部署Redis Cluster集群的问题
2022/04/01 Redis
JavaScript模拟实现网易云轮播效果
2022/04/04 Javascript