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 相关文章推荐
将文件夹压缩成zip文件的php代码
Dec 14 PHP
检测png图片是否完整的php代码
Sep 06 PHP
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
Aug 02 PHP
深入PHP FTP类的详解
Jun 13 PHP
PHP生成静态HTML页面最简单方法示例
Apr 09 PHP
使用PHP生成二维码的方法汇总
Jul 22 PHP
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
Mar 22 PHP
Yii2 ActiveRecord多表关联及多表关联搜索的实现
Jun 30 PHP
PHP标准类(stdclass)用法示例
Sep 28 PHP
PHP策略模式定义与用法示例
Jul 27 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
Aug 09 PHP
实例讲解PHP验证邮箱是否合格
Jan 28 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
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
2014/11/04 PHP
PHP callback函数使用方法和注意事项
2015/01/23 PHP
PHP汉字转换拼音的函数代码
2015/12/30 PHP
PHP数组相加操作及与array_merge的区别浅析
2016/11/26 PHP
js的[defer]和[async]属性
2014/11/24 Javascript
在JavaScript中处理字符串之link()方法的使用
2015/06/08 Javascript
深入理解Angularjs向指令传递数据双向绑定机制
2016/12/31 Javascript
详解Vue2.0里过滤器容易踩到的坑
2017/06/01 Javascript
Textarea输入字数限制实例(兼容iOS&amp;安卓)
2017/07/06 Javascript
AngularJS学习笔记之表单验证功能实例详解
2017/07/06 Javascript
Javasript设计模式之链式调用详解
2018/04/26 Javascript
bootstrap模态框关闭后清除模态框的数据方法
2018/08/10 Javascript
JavaScript内置对象math,global功能与用法实例分析
2019/06/10 Javascript
微信小程序-API接口安全详解
2019/07/16 Javascript
vue项目中全局引入1个.scss文件的问题解决
2019/08/01 Javascript
[02:43]DOTA2英雄基础教程 圣堂刺客
2013/12/09 DOTA
python中使用urllib2伪造HTTP报头的2个方法
2014/07/07 Python
Python实现简单的四则运算计算器
2016/11/02 Python
Python实现基本数据结构中栈的操作示例
2017/12/04 Python
解决PyCharm import torch包失败的问题
2018/10/13 Python
python 调用有道api接口的方法
2019/01/03 Python
Python 实现的 Google 批量翻译功能
2019/08/26 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
pytorch 图像中的数据预处理和批标准化实例
2020/01/15 Python
如何用PyPy让你的Python代码运行得更快
2020/12/02 Python
汇智创新科技发展有限公司
2015/12/06 面试题
在职人员函授期间自我评价分享
2013/11/08 职场文书
庆七一活动方案
2014/01/25 职场文书
服务质量承诺书
2014/03/27 职场文书
竞聘演讲稿
2014/04/24 职场文书
新兵入伍心得体会
2014/09/04 职场文书
2015感人爱情寄语
2015/02/26 职场文书
毕业论文致谢格式模板
2015/05/14 职场文书
党小组评议意见
2015/06/02 职场文书
优秀团员主要事迹材料
2015/11/05 职场文书