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 相关文章推荐
实现树状结构的两种方法
Oct 09 PHP
PHP通用检测函数集合
Nov 25 PHP
PHP开发框架总结收藏
Apr 24 PHP
php购物网站支付paypal使用方法
Nov 28 PHP
PHP中is_dir()函数使用指南
May 08 PHP
PHP中你应该知道的require()文件包含的正确用法
Jun 12 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
Mar 18 PHP
Yii2如何批量添加数据
May 17 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
Nov 16 PHP
laravel 5.4 + vue + vux + element的环境搭配过程介绍
Apr 26 PHP
php实现微信企业转账功能
Oct 02 PHP
PhpStorm连接服务器并实现自动上传功能
Dec 09 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/12/06 PHP
PHP错误处理函数
2016/04/03 PHP
$.ajax json数据传递方法
2008/11/19 Javascript
几个常用的JavaScript字符串处理函数 - split()、join()、substring()和indexOf()
2009/06/02 Javascript
JavaScript 学习笔记(七)字符串的连接
2009/12/31 Javascript
清空上传控件input file的值
2010/07/03 Javascript
一个级联菜单代码学习及removeClass与addClass的应用
2013/01/24 Javascript
jQuery绑定事件不执行但alert后可以正常执行
2014/06/03 Javascript
jQuery中filter()方法用法实例
2015/01/06 Javascript
JS实现简洁、全兼容的拖动层实例
2015/05/13 Javascript
js实现网页收藏功能
2015/12/17 Javascript
JavaScript模拟数组合并concat
2016/03/06 Javascript
BootStrap3学习笔记(一)之网格系统
2016/05/20 Javascript
vue组件父子间通信之综合练习(聊天室)
2017/11/07 Javascript
Vue路由history模式解决404问题的几种方法
2018/09/29 Javascript
使用iView Upload 组件实现手动上传图片的示例代码
2018/10/01 Javascript
微信JS-SDK updateAppMessageShareData安卓不能自定义分享详解
2019/03/29 Javascript
VSCode使用之Vue工程配置eslint
2019/04/30 Javascript
通过微信公众平台获取公众号文章的方法示例
2019/12/25 Javascript
webpack5 联邦模块介绍详解
2020/07/08 Javascript
pymongo实现控制mongodb中数字字段做加法的方法
2015/03/26 Python
python模块简介之有序字典(OrderedDict)
2016/12/01 Python
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
python实现决策树
2017/12/21 Python
浅析python协程相关概念
2018/01/20 Python
python写程序统计词频的方法
2019/07/29 Python
资深生产主管自我评价
2013/09/22 职场文书
应聘销售主管的求职信
2014/04/26 职场文书
科长竞聘演讲稿
2014/05/16 职场文书
小学感恩教育活动总结
2014/07/07 职场文书
售房委托书
2014/08/30 职场文书
个人收入证明范本
2014/09/18 职场文书
Nginx解决前端访问资源跨域问题的方法详解
2021/03/31 Servers
解决Nginx 配置 proxy_pass 后 返回404问题
2021/03/31 Servers
django学习之ajax post传参的2种格式实例
2021/05/14 Python
进行数据处理的6个 Python 代码块分享
2022/04/06 Python