php 实现一个字符串加密解密的函数实例代码


Posted in PHP onNovember 01, 2016

php 实现一个字符串加密解密的函数

函数代码如下:

/*********************************************************************
  函数名称:encrypt
  函数作用:加密解密字符串
  使用方法:
  加密   :encrypt('str','E','nowamagic');
  解密   :encrypt('被加密过的字符串','D','nowamagic');
  参数说明:
  $string  :需要加密解密的字符串
  $operation:判断是加密还是解密:E:加密  D:解密
  $key   :加密的钥匙(密匙);
  
http://www.cnblogs.com/roucheng/
*********************************************************************/
  function encrypt($string,$operation,$key='')
  {
    $key=md5($key);
    $key_length=strlen($key);
    $string=$operation=='D'?base64_decode($string):substr(md5($string.$key),0,8).$string;
    $string_length=strlen($string);
    $rndkey=$box=array();
    $result='';
    for($i=0;$i<=255;$i++)
    {
      $rndkey[$i]=ord($key[$i%$key_length]);
      $box[$i]=$i;
    }
    for($j=$i=0;$i<256;$i++)
    {
      $j=($j+$box[$i]+$rndkey[$i])%256;
      $tmp=$box[$i];
      $box[$i]=$box[$j];
      $box[$j]=$tmp;
    }
    for($a=$j=$i=0;$i<$string_length;$i++)
    {
      $a=($a+1)%256;
      $j=($j+$box[$a])%256;
      $tmp=$box[$a];
      $box[$a]=$box[$j];
      $box[$j]=$tmp;
      $result.=chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256]));
    }
    if($operation=='D')
    {
      if(substr($result,0,8)==substr(md5(substr($result,8).$key),0,8))
      {
        return substr($result,8);
      }
      else
      {
        return'';
      }
    }
    else
    {
      return str_replace('=','',base64_encode($result));
    }
  }

使用实例:

$id = 132;
  
$token = encrypt($id, 'E', 'a');
  
echo '加密:'.encrypt($id, 'E', 'a');
echo '<br />';
  
echo '解密:'.encrypt($token, 'D', 'a');

运行结果:

加密:AYCnIibFlg3ViRs
解密:132

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

PHP 相关文章推荐
php 伪造本地文件包含漏洞的代码
Nov 03 PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
Nov 23 PHP
分享一段php获取linux服务器状态的代码
May 27 PHP
php中Array2xml类实现数组转化成XML实例
Dec 08 PHP
PHP合并discuz用户脚本的方法
Aug 04 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
Apr 11 PHP
php 数组处理函数extract详解及实例代码
Nov 23 PHP
laravel如何开启跨域功能示例详解
Aug 31 PHP
PHP使用标准库spl实现的观察者模式示例
Aug 04 PHP
ThinkPHP5 的简单搭建和使用详解
Nov 15 PHP
vmware linux系统安装最新的php7图解
Apr 14 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
Dec 16 PHP
PHP+Ajax异步带进度条上传文件实例
Nov 01 #PHP
php 判断字符串编码是utf-8 或gb2312实例
Nov 01 #PHP
PHP用户验证和标签推荐的简单使用
Oct 31 #PHP
PHP实现小偷程序实例
Oct 31 #PHP
利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
Oct 31 #PHP
利用php做服务器和web前端的界面进行交互
Oct 31 #PHP
php将服务端的文件读出来显示在web页面实例
Oct 31 #PHP
You might like
javascript 小型动画组件与实现代码
2010/06/02 PHP
php实现的mysqldb读写分离操作类示例
2017/02/07 PHP
PHP简单实现解析xml为数组的方法
2018/05/02 PHP
PDO::inTransaction讲解
2019/01/28 PHP
PHP获取ttf格式文件字体名的方法示例
2019/03/06 PHP
PHP常用的类封装小结【4个工具类】
2019/06/28 PHP
IE 下的只读 innerHTML
2009/08/21 Javascript
JavaScript数组函数unshift、shift、pop、push使用实例
2014/08/27 Javascript
js QQ客服悬浮效果实现代码
2014/12/12 Javascript
node.js中的fs.lchmodSync方法使用说明
2014/12/16 Javascript
jQuery实现可用于博客的动态滑动菜单
2015/03/09 Javascript
jquery实现LED广告牌旋转系统图片切换效果代码分享
2015/08/26 Javascript
Vue学习笔记之表单输入控件绑定
2017/09/05 Javascript
使用vue制作探探滑动堆叠组件的实例代码
2018/03/07 Javascript
vue项目中将element-ui table表格写成组件的实现代码
2019/06/12 Javascript
[01:02:00]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第三场 1月24日
2021/03/11 DOTA
Python实现根据指定端口探测服务器/模块部署的方法
2014/08/25 Python
python实现在每个独立进程中运行一个函数的方法
2015/04/23 Python
python 爬取微信文章
2016/01/30 Python
Python中应该使用%还是format来格式化字符串
2018/09/25 Python
Python实现E-Mail收集插件实例教程
2019/02/06 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
2019/08/05 Python
Python如何基于selenium实现自动登录博客园
2019/12/16 Python
浅谈django框架集成swagger以及自定义参数问题
2020/07/07 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
2021/01/26 Python
香港交友网站:be2香港
2018/07/22 全球购物
毕业生幼师求职自荐信
2013/10/01 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
2014年出纳工作总结与计划
2014/12/09 职场文书
2014个人年度工作总结
2014/12/15 职场文书
辞职信如何写
2015/02/27 职场文书
2015年妇幼卫生工作总结
2015/05/23 职场文书
《开国大典》教学反思
2016/02/16 职场文书
深入浅析Redis 集群伸缩原理
2021/05/15 Redis
OpenCV 图像梯度的实现方法
2021/07/25 Python
Android移动应用开发指南之六种布局详解
2022/09/23 Java/Android