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写入WRITE编码为UTF8的文件的实现代码
Jul 07 PHP
php中实现记住密码下次自动登录的例子
Nov 06 PHP
php调整服务器时间的方法
Apr 03 PHP
10条php编程小技巧
Jul 07 PHP
php中ob函数缓冲机制深入理解
Aug 03 PHP
修复ShopNC使用QQ 互联时提示100010 错误
Nov 08 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
Mar 18 PHP
php分页查询的简单实现代码
Mar 14 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
May 23 PHP
PHP中一个有趣的preg_replace函数详解
Aug 15 PHP
Ajax请求PHP后台接口返回信息的实例代码
Aug 21 PHP
Yii框架引入coreseek分页功能示例
Feb 08 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
php 过滤器实现代码
2010/08/09 PHP
兼容性比较好的PHP生成缩略图的代码
2011/01/12 PHP
php常用Output和ptions/Info函数集介绍
2013/06/19 PHP
使用Yii2实现主从数据库设置
2016/11/20 PHP
表单的一些基本用法与技巧
2006/07/15 Javascript
window.open()弹出居中的窗口
2007/02/01 Javascript
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
JavaScript DOM 学习第五章 表单简介
2010/02/19 Javascript
高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
2010/06/19 Javascript
让ie6也支持websocket采用flash封装实现
2013/02/18 Javascript
js获取本机的外网/广域网ip地址完整源码
2013/08/12 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
2013/11/18 Javascript
javascript实时显示北京时间的方法
2015/03/12 Javascript
js获取当前日期时间及其它操作汇总
2015/04/17 Javascript
jquery实现简单手风琴菜单效果实例
2015/06/13 Javascript
纯javascript响应式树形菜单效果
2015/11/10 Javascript
学习javascript文件加载优化
2016/02/19 Javascript
需要牢记的JavaScript基础知识
2016/09/25 Javascript
Bootstrap中data-target 到底是什么
2017/02/14 Javascript
react实现pure render时bind(this)隐患需注意!
2017/03/09 Javascript
jquery获取链接地址和跳转详解(推荐)
2017/08/15 jQuery
微信小程序如何实现全局重新加载
2019/06/05 Javascript
[52:40]完美世界DOTA2联赛PWL S2 Magma vs GXR 第一场 11.29
2020/12/02 DOTA
Golang与python线程详解及简单实例
2017/04/27 Python
python 表达式和语句及for、while循环练习实例
2017/07/07 Python
python 读取txt中每行数据,并且保存到excel中的实例
2018/04/29 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
2020/02/28 Python
在Matplotlib图中插入LaTex公式实例
2020/04/17 Python
python安装及变量名介绍详解
2020/12/12 Python
JD Sports芬兰:英国领先的运动鞋和运动服饰零售商
2018/11/16 全球购物
异常和异常类的概念
2014/09/12 面试题
中专生自荐信
2014/06/25 职场文书
个人授权委托书样本
2014/09/13 职场文书
代收款委托书范本
2014/10/01 职场文书
活动简报范文
2015/07/22 职场文书
PyTorch 如何自动计算梯度
2021/05/23 Python