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和js交互一例-PHP教程,PHP应用
Jan 03 PHP
FleaPHP的安全设置方法
Sep 15 PHP
php学习笔记 面向对象的构造与析构方法
Jun 13 PHP
解析crontab php自动运行的方法
Jun 24 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
Aug 15 PHP
php字符串过滤与替换小结
Jan 26 PHP
[原创]PHP实现SQL语句格式化功能的方法
Jul 28 PHP
Laravel学习教程之View模块详解
Sep 18 PHP
PHP实现的贪婪算法实例
Oct 17 PHP
使用PHPExcel导出Excel表
Sep 08 PHP
PHP registerXPathNamespace()函数讲解
Feb 03 PHP
php7 图形用户界面GUI 开发示例
Feb 22 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 cookie 登录验证示例代码
2009/03/16 PHP
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
2011/12/05 PHP
php限制ip地址范围的方法
2015/03/31 PHP
phpStudy访问速度慢和启动失败的解决办法
2015/11/19 PHP
Aster vs KG BO3 第一场2.18
2021/03/10 DOTA
比较详细的javascript对象的property和prototype是什么一种关系
2007/08/06 Javascript
iframe异步加载实现点击左边菜单加载右边内容实例讲解
2013/03/04 Javascript
JS特权方法定义作用以及与公有方法的区别
2013/03/18 Javascript
利用webqq协议使用python登录qq发消息源码参考
2013/04/08 Javascript
addEventListener 的用法示例介绍
2014/05/07 Javascript
jQuery实现点击行选中或取消CheckBox的方法
2016/08/01 Javascript
js中判断变量类型函数typeof的用法总结
2016/08/09 Javascript
angular2路由切换改变页面title的示例代码
2017/08/23 Javascript
在React 组件中使用Echarts的示例代码
2017/11/08 Javascript
一种angular的方法级的缓存注解(装饰器)
2018/03/13 Javascript
Vue实现左右菜单联动实现代码
2018/08/12 Javascript
解决layui前端框架 form表单,table表等内置控件不显示的问题
2018/08/19 Javascript
vue根据进入的路由进行原路返回的方法
2018/09/26 Javascript
Vue将页面导出为图片或者PDF
2020/08/17 Javascript
Vue使用lodop实现打印小结
2019/07/06 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
2020/08/13 Javascript
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
[45:50]完美世界DOTA2联赛PWL S3 CPG vs Forest 第二场 12.16
2020/12/17 DOTA
用Python将动态GIF图片倒放播放的方法
2016/11/02 Python
PyQt编程之如何在屏幕中央显示窗体的实例
2019/06/18 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
在pycharm中关掉ipython console/PyDev操作
2020/06/09 Python
澳大利亚最大的网上油画销售画廊:Direct Art Australia
2018/04/15 全球购物
夏洛特和乔治婴儿和儿童时装精品店:Charlotte and George
2018/06/06 全球购物
怎么写有吸引力的自荐信
2013/11/17 职场文书
注塑工厂厂长岗位职责
2013/12/02 职场文书
企业财务经理岗位职责
2015/04/08 职场文书
反邪教教育心得体会
2016/01/15 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书
详解Java实践之抽象工厂模式
2021/06/18 Java/Android
“鬼灭之刃”热度不减,其成功背后的原因是什么?
2022/03/22 日漫