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实现框架(一)
Oct 09 PHP
discuz安全提问算法
Jun 06 PHP
PHP备份数据库生成SQL文件并下载的函数代码
Feb 05 PHP
PHP中根据IP地址判断城市实现城市切换或跳转代码
Sep 04 PHP
Smarty foreach控制循环次数的实现详解
Jul 03 PHP
PHP实现过滤掉非汉字字符只保留中文字符
Jun 04 PHP
ThinkPHP进程计数类Process用法实例详解
Sep 25 PHP
php版交通银行网银支付接口开发入门教程
Sep 26 PHP
php分页查询的简单实现代码
Mar 14 PHP
PHP编译configure时常见错误的总结
Aug 17 PHP
PHP使用ActiveMQ实例
Feb 05 PHP
PHP利用Mysql锁解决高并发的方法
Sep 04 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
世界上第一台立体声收音机
2021/03/01 无线电
PHP设计模式之装饰者模式
2012/02/29 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
2014/11/19 PHP
PHP实现单条sql执行多个数据的insert语句方法
2019/10/11 PHP
js中的window.open返回object的错误的解决方法
2009/08/15 Javascript
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
jQuery EasyUI API 中文文档 - NumberSpinner数值微调器使用介绍
2011/10/21 Javascript
js仿百度贴吧验证码特效实例代码
2014/01/16 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
jquery实现商品sku多属性选择功能(商品详情页)
2019/12/20 jQuery
利用webpack理解CommonJS和ES Modules的差异区别
2020/06/16 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
2020/08/17 Javascript
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
python 简易计算器程序,代码就几行
2009/08/29 Python
Python实现端口检测的方法
2018/07/24 Python
详解Python3之数据指纹MD5校验与对比
2019/06/11 Python
Python使用psutil获取进程信息的例子
2019/12/17 Python
浅谈Python中的模块
2020/06/10 Python
python 识别登录验证码图片功能的实现代码(完整代码)
2020/07/03 Python
python+django+selenium搭建简易自动化测试
2020/08/19 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
2020/12/27 Python
Chain Reaction Cycles俄罗斯:世界上最大的在线自行车商店
2019/08/27 全球购物
super关键字的用法
2012/04/10 面试题
Python如何实现单例模式
2016/06/03 面试题
大四学生思想汇报
2014/01/13 职场文书
教师求职自荐信
2014/03/09 职场文书
美容院店长岗位职责
2014/04/08 职场文书
小学运动会报道稿
2014/10/04 职场文书
酒店总经理岗位职责
2015/04/01 职场文书
晚会主持人开场白台词
2015/05/28 职场文书
2015迎新晚会开场白
2015/05/29 职场文书
夏洛特的网观后感
2015/06/15 职场文书
2016秋季小学开学寄语
2015/12/03 职场文书
JavaScript实现淘宝商品图切换效果
2021/04/29 Javascript
详解apache编译安装httpd-2.4.54及三种风格的init程序特点和区别
2022/07/15 Servers