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 全文搜索和替换的实现代码
Jul 29 PHP
php导出word格式数据的代码实例
Nov 25 PHP
destoon实现底部添加你是第几位访问者的方法
Jul 15 PHP
将FCKeditor导入PHP+SMARTY的实现方法
Jan 15 PHP
PHP版本如何选择?应该使用哪个版本?
May 13 PHP
PHP中你应该知道的require()文件包含的正确用法
Jun 12 PHP
PHP简单实现断点续传下载的方法
Sep 25 PHP
Joomla使用Apache重写模式的方法
May 04 PHP
PHP微信开发之文本自动回复
Jun 23 PHP
PHP+jquery+CSS制作头像登录窗(仿QQ登陆)
Oct 20 PHP
laravel实现按月或天或小时统计mysql数据的方法
Oct 09 PHP
PHP与Web页面的交互示例详解二
Aug 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
一步一步学习PHP(7) php 字符串相关应用
2010/03/05 PHP
Windows 下的 PHP-PEAR 安装方法
2010/11/20 PHP
CodeIgniter分页类pagination使用方法示例
2016/03/28 PHP
再谈PHP中单双引号的区别详解
2016/06/12 PHP
TP3.2.3框架文件上传操作实例详解
2020/01/23 PHP
JavaScript开发时的五个注意事项
2007/12/08 Javascript
javascript 常用方法总结
2009/06/03 Javascript
jquery 如何动态添加、删除class样式方法介绍
2012/11/07 Javascript
jquery实现瀑布流效果分享
2014/03/26 Javascript
基于EasyUI的基础之上实现树形功能菜单
2017/06/28 Javascript
详解wow.js中各种特效对应的类名
2017/09/13 Javascript
webpack写jquery插件的环境配置
2017/12/21 jQuery
vue-cli常用设置总结
2018/02/24 Javascript
详解使用vue-cli脚手架初始化Vue项目下的项目结构
2018/03/08 Javascript
防止Layui form表单重复提交的实现方法
2019/09/10 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
Python 时间处理datetime实例
2008/09/06 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
2016/10/09 Python
Python实现图片转字符画的示例
2017/08/22 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
2018/10/21 Python
Python将文字转成语音并读出来的实例详解
2019/07/15 Python
python 中Arduino串口传输数据到电脑并保存至excel表格
2019/10/14 Python
解决python web项目意外关闭,但占用端口的问题
2019/12/17 Python
Python读取excel文件中带公式的值的实现
2020/04/17 Python
纯HTML5+CSS3制作图片旋转
2016/01/12 HTML / CSS
阿迪达斯丹麦官网:adidas丹麦
2016/10/01 全球购物
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
大学生优秀的自我评价分享
2013/10/22 职场文书
食堂厨师岗位职责
2014/08/25 职场文书
街道务虚会发言材料
2014/10/20 职场文书
写景作文评语集锦
2014/12/25 职场文书
乡镇法制宣传日活动总结
2015/05/05 职场文书
毕业赠语大全
2015/06/23 职场文书
婚宴新娘致辞
2015/07/28 职场文书
工作一年自我鉴定
2019/06/20 职场文书
html5实现点击弹出图片功能
2021/07/16 HTML / CSS