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-cli简介(不会Shell语言一样用Shell)
Jun 03 PHP
使用php将某个目录下面的所有文件罗列出来的方法详解
Jun 21 PHP
phpmailer中文乱码问题的解决方法
Apr 22 PHP
ThinkPHP权限认证Auth实例详解
Jul 22 PHP
C# WinForm中实现快捷键自定义设置实例
Jan 23 PHP
浅谈php的优缺点
Jul 14 PHP
PHP实现连接设备、通讯和发送命令的方法
Oct 13 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
Jul 08 PHP
php set_include_path函数设置 include_path 配置选项
Oct 30 PHP
PHP实现的Redis多库选择功能单例类
Jul 27 PHP
PHP多维数组排序array详解
Nov 21 PHP
PHP通过文件保存和更新信息的方法分析
Sep 12 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
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
分享一段PHP制作的中文拼音首字母工具类
2014/12/11 PHP
php 魔术常量详解及实例代码
2016/12/04 PHP
POST一个JSON格式的数据给Restful服务实例详解
2017/04/07 PHP
js获取变量
2006/08/24 Javascript
js判断浏览器类型的方法
2013/08/07 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
javascript处理表单示例(javascript提交表单)
2014/04/28 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
JavaScript语言对Unicode字符集的支持详解
2014/12/30 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
Nodejs的express使用教程
2015/11/23 NodeJs
探索angularjs+requirejs全面实现按需加载的套路
2016/02/26 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
2017/07/09 Javascript
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
完美解决axios在ie下的兼容性问题
2018/03/05 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
2019/06/04 Javascript
javascript之分片上传,断点续传的实际项目实现详解
2019/09/05 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
2019/11/20 Javascript
[05:15]2018年度CS GO社区贡献奖-完美盛典
2018/12/16 DOTA
python实现带验证码网站的自动登陆实现代码
2015/01/12 Python
在Qt中正确的设置窗体的背景图片的几种方法总结
2019/06/19 Python
django admin 添加自定义链接方式
2020/03/11 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
2020/11/15 Python
Qoo10马来西亚:全球时尚和引领潮流的购物市场
2016/08/25 全球购物
中国入世承诺
2014/04/01 职场文书
大学学习计划书范文
2014/05/02 职场文书
优秀团干部个人事迹
2014/05/29 职场文书
家庭困难证明
2014/10/12 职场文书
开展批评与自我批评发言材料
2014/10/17 职场文书
班主任先进事迹材料
2014/12/17 职场文书
政协工作总结2015
2015/05/20 职场文书
CSS中Single Div 绘图技巧的实现
2021/06/18 HTML / CSS
mysql 体系结构和存储引擎介绍
2022/05/06 MySQL