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 相关文章推荐
基于qmail的完整WEBMAIL解决方案安装详解
Oct 09 PHP
关于BIG5-HKSCS的解决方法
Mar 20 PHP
PHP实现手机归属地查询API接口实现代码
Aug 27 PHP
destoon官方标签大全
Jun 20 PHP
php使用GeoIP库实例
Jun 27 PHP
Symfony2实现在controller中获取url的方法
Mar 18 PHP
thinkphp中的url跳转用法分析
Jul 12 PHP
PHP读取文件的常见几种方法
Nov 03 PHP
php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
Nov 16 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
Apr 04 PHP
PHP的PDO事务与自动提交
Jan 24 PHP
PHP封装的mysqli数据库操作类示例
Feb 16 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
main.php
2006/12/09 PHP
PHP支持多种格式图片上传(支持jpg、png、gif)
2011/11/03 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
2015/01/26 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
2016/06/22 PHP
Yii2主题(Theme)用法详解
2016/07/23 PHP
PHP array_shift()用法实例分析
2019/01/07 PHP
jQuery选择头像并实时显示的代码
2010/06/27 Javascript
javascript开发技术大全 第4章 直接量与字符集
2011/07/03 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
2014/02/19 Javascript
浅谈javascript对象模型和function对象
2014/12/26 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
2017/03/02 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
详解Vue 事件修饰符capture 的使用
2017/12/29 Javascript
JavaScript实现计算圆周率到小数点后100位的方法示例
2018/05/08 Javascript
微信小程序canvas实现刮刮乐效果
2018/07/09 Javascript
微信小程序实现图片上传放大预览删除代码
2020/06/28 Javascript
JavaScript Array对象基本方法详解
2019/09/03 Javascript
浅谈Vue.set实际上是什么
2019/10/17 Javascript
JavaScript仿京东秒杀倒计时
2020/03/17 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
2021/01/07 Javascript
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
2019/08/22 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
2019/09/15 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
2020/11/02 Python
使用html5制作loading图的示例
2014/04/14 HTML / CSS
MANGO官方网站:西班牙芒果服装品牌
2017/01/15 全球购物
西班牙最大的婴儿用品网上商店:Bebitus
2019/05/30 全球购物
思想政治教育专业个人求职信范文
2013/12/20 职场文书
计划生育标语
2014/06/23 职场文书
试用期自我评价范文
2015/03/10 职场文书
公司借款担保书
2015/09/22 职场文书
解决Navicat for Mysql连接报错1251的问题(连接失败)
2021/05/27 MySQL
详解CSS3.0(Cascading Style Sheet) 层叠级联样式表
2021/07/16 HTML / CSS
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏
Ruby处理YAML和json数据
2022/04/18 Ruby
Django框架模板用法详解
2022/06/10 Python