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 相关文章推荐
15种PHP Encoder的比较
Apr 17 PHP
修改Zend引擎实现PHP源码加密的原理及实践
Apr 14 PHP
php将数据库中的电话号码读取出来并生成图片
Aug 31 PHP
PHP中的session永不过期的解决思路及实现方法分享
Apr 20 PHP
比file_get_contents稳定的curl_get_contents分享
Jan 11 PHP
php中判断文件存在是用file_exists还是is_file的整理
Sep 12 PHP
php基于base64解码图片与加密图片还原实例
Nov 03 PHP
php无序树实现方法
Jul 28 PHP
PHP实现截取中文字符串不出现?号的解决方法
Dec 29 PHP
PHP多进程通信-消息队列使用
Mar 08 PHP
实例分析10个PHP常见安全问题
Jul 09 PHP
PHP使用QR Code生成二维码实例
Jul 07 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的ajax简单实例
2014/02/27 PHP
LNMP部署laravel以及xhprof安装使用教程
2017/09/14 PHP
jquery 日期分离成年月日的代码
2010/05/14 Javascript
电子商务网站上的常用的js放大镜效果
2011/12/08 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
2013/01/17 Javascript
JavaScript实现表格排序方法
2013/06/14 Javascript
JS.getTextContent(element,preformatted)使用介绍
2013/09/21 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
2016/01/27 Javascript
详解Javacript和AngularJS中的Promises
2016/02/09 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
jQuery基于正则表达式的表单验证功能示例
2017/01/21 Javascript
基于jQuery实现简单人工智能聊天室
2017/02/10 Javascript
如何在 Vue.js 中使用第三方js库
2017/04/25 Javascript
解决Vue在封装了Axios后手动刷新页面拦截器无效的问题
2018/11/08 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
Webpack设置环境变量的一些误区详解
2019/12/19 Javascript
微信小程序实现下滑到底部自动翻页功能
2020/03/07 Javascript
vue实现移动端项目多行文本溢出省略
2020/07/29 Javascript
python中Genarator函数用法分析
2015/04/08 Python
python中requests小技巧
2017/05/10 Python
Python基于time模块求程序运行时间的方法
2017/09/18 Python
Python使用一行代码获取上个月是几月
2018/08/30 Python
Django使用Channels实现WebSocket的方法
2019/07/28 Python
Jupyter Notebook的连接密码 token查询方式
2020/04/21 Python
如何用用Python将地址标记在地图上
2021/02/07 Python
Desigual德国官网:在线购买原创服装
2018/03/27 全球购物
香港彩色隐形眼镜在线商店:Stunninglens(全球免费送货)
2019/05/10 全球购物
美国领先的眼镜和太阳镜在线零售商:Glasses.com
2019/08/26 全球购物
饮料业务员岗位职责
2013/12/15 职场文书
大学毕业感言50字
2014/02/07 职场文书
党员一句话承诺大全
2014/03/28 职场文书
中介业务员岗位职责
2014/04/09 职场文书
职工宿舍管理制度
2015/08/05 职场文书
防震减灾主题班会
2015/08/14 职场文书
2016年寒假学习心得体会
2015/10/09 职场文书