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下打开URL地址的几种方法小结
May 16 PHP
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
Dec 29 PHP
PHP 中检查或过滤IP地址的实现代码
Nov 27 PHP
php函数array_merge用法一例(合并同类数组)
Feb 03 PHP
php class中public,private,protected的区别以及实例分析
Jun 18 PHP
浅析memcache启动以及telnet命令详解
Jun 28 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
Jul 08 PHP
微信公众平台开发之配置与请求
Aug 26 PHP
PHP QRCODE生成彩色二维码的方法
May 19 PHP
浅谈php处理后端&amp;接口访问超时的解决方法
Oct 29 PHP
thinkPHP数据查询常用方法总结【select,find,getField,query】
Mar 15 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
Oct 08 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依赖注入的理解实例分析
2016/10/09 PHP
redis+php实现微博(二)发布与关注功能详解
2019/09/23 PHP
Js 刷新框架页的代码
2010/04/13 Javascript
Jquery ThickBox插件使用心得(不建议使用)
2010/09/08 Javascript
jQuery学习总结之元素的相对定位和选择器(持续更新)
2011/04/26 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
2013/10/09 Javascript
js使用eval解析json实例与注意事项分享
2014/01/18 Javascript
返回上一页并自动刷新的JavaScript代码
2014/02/19 Javascript
node.js中的http.response.write方法使用说明
2014/12/14 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
JS判断iframe是否加载完成的方法
2016/08/03 Javascript
JavaScript面试题(指针、帽子和女朋友)
2016/11/23 Javascript
JSON键值对序列化和反序列化解析
2017/01/24 Javascript
JavaScript标准对象_动力节点Java学院整理
2017/06/27 Javascript
用js屏蔽被http劫持的浮动广告实现方法
2017/08/10 Javascript
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
JavaScript实现简单随机点名器
2019/11/21 Javascript
Vue中computed和watch有哪些区别
2020/12/19 Vue.js
[01:09:40]Newbee vs Pain 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python实现文件分组复制到不同目录的例子
2014/06/04 Python
《Python之禅》中对于Python编程过程中的一些建议
2015/04/03 Python
python先序遍历二叉树问题
2017/11/10 Python
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
Pytorch 的损失函数Loss function使用详解
2020/01/02 Python
postman和python mock测试过程图解
2020/02/22 Python
Python2及Python3如何实现兼容切换
2020/09/01 Python
matplotlib绘制多子图共享鼠标光标的方法示例
2021/01/08 Python
CSS3制作ajax loader icon实现思路及代码
2013/08/25 HTML / CSS
设计顾问服务计划书
2014/05/04 职场文书
课外活动总结范文
2014/07/09 职场文书
党员专题组织生活会发言材料
2014/10/17 职场文书
2016年综治和平安建设宣传月活动总结
2016/04/01 职场文书
python中pandas.read_csv()函数的深入讲解
2021/03/29 Python
Python基于百度API识别并提取图片中文字
2021/06/27 Python
Redis高并发防止秒杀超卖实战源码解决方案
2021/11/01 Redis