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将向Java靠拢
Oct 09 PHP
?生?D片??C字串
Dec 06 PHP
php 采集书并合成txt格式的实现代码
Mar 01 PHP
PHP运行时强制显示出错信息的代码
Apr 20 PHP
使用php实现快钱支付功能(涉及到接口)
Jul 01 PHP
盘点PHP和ASP.NET的10大对比!
Dec 24 PHP
CodeIgniter集成smarty的方法详解
May 26 PHP
解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
Feb 25 PHP
php连接mysql数据库
Mar 21 PHP
利用laravel搭建一个迷你博客实战教程
Aug 13 PHP
laravel实现按时间日期进行分组统计方法示例
Mar 23 PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
Mar 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
Zend Framework校验器Zend_Validate用法详解
2016/12/09 PHP
PHP中散列密码的安全性分析
2019/07/26 PHP
使用js如何实现全选与全不选
2013/12/30 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
js图片轮播手动切换特效
2017/01/12 Javascript
jQuery实现鼠标移入移出事件切换功能示例
2018/09/06 jQuery
前端js中的事件循环eventloop机制详解
2019/05/15 Javascript
Vue 2.0双向绑定原理的实现方法
2019/10/23 Javascript
js实现简单进度条效果
2020/03/25 Javascript
原生JS生成指定位数的验证码
2020/10/28 Javascript
详解datagrid使用方法(重要)
2020/11/06 Javascript
解决Vue watch里调用方法的坑
2020/11/07 Javascript
在Vue中使用mockjs代码实例
2020/11/25 Vue.js
python 图片验证码代码分享
2012/07/04 Python
Python中关键字is与==的区别简述
2014/07/31 Python
Python二叉树的定义及常用遍历算法分析
2017/11/24 Python
Django学习笔记之ORM基础教程
2018/03/27 Python
DataFrame 将某列数据转为数组的方法
2018/04/13 Python
pandas数据处理基础之筛选指定行或者指定列的数据
2018/05/03 Python
pandas重新生成索引的方法
2018/11/06 Python
利用pyuic5将ui文件转换为py文件的方法
2019/06/19 Python
对python中GUI,Label和Button的实例详解
2019/06/27 Python
解决阿里云邮件发送不能使用25端口问题
2020/08/07 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
2020/09/25 Python
Python高阶函数与装饰器函数的深入讲解
2020/11/10 Python
使用numpngw和matplotlib生成png动画的示例代码
2021/01/24 Python
全球最大化妆品零售网站:SkinStore
2020/10/24 全球购物
do you have any Best Practice for testing
2016/06/04 面试题
雪山饭庄的创业计划书范文
2014/01/18 职场文书
简历中的自我评价怎么写
2014/01/29 职场文书
幼儿园教师教育感言
2014/02/28 职场文书
党的群众路线教育实践活动公开承诺书
2014/03/28 职场文书
致800米运动员广播稿(10篇)
2014/10/17 职场文书
健康状况证明模板
2014/10/23 职场文书
《索溪峪的野》教学反思
2016/02/19 职场文书
创业计划书之珠宝饰品
2019/08/26 职场文书