php 实现一个字符串加密解密的函数实例代码

 更新时间:2016年11月01日 08:48:51   投稿:lqh  
php开发中,我们经常会对字符串进行加密解密操作,本文章向大家分享一个php字符串加密解密的函数,需要的朋友可以参考一下

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永久登录、记住我功能实现方法和安全做法

    这篇文章主要介绍了PHP永久登录、记住我功能实现方法和安全做法,本文着重讲解用数据库实现更安全的永久登录、记住我功能,需要的朋友可以参考下
    2015-04-04
  • 实例分析PHP将字符串转换成数字的方法

    实例分析PHP将字符串转换成数字的方法

    在本篇文章里我们给大家分享的是关于PHP将字符串转换成数字的方法和相关知识点,有兴趣的朋友们学习下。
    2019-01-01
  • thinkphp5使用phpmail发送qq邮件的实现过程

    thinkphp5使用phpmail发送qq邮件的实现过程

    这篇文章主要给大家介绍了thinkphp5使用phpmail发送qq邮件的实现过程,文中有详细的代码示例供大家参考,具有一定的参考价值,感兴趣的小伙伴可以自己动手尝试一下
    2023-10-10
  • php中smarty变量修饰用法实例分析

    php中smarty变量修饰用法实例分析

    这篇文章主要介绍了php中smarty变量修饰用法,实例分析了smarty模板变量修饰的常用技巧,需要的朋友可以参考下
    2015-06-06
  • php中将汉字转换成拼音的函数代码

    php中将汉字转换成拼音的函数代码

    公司游戏频道的后台中有很多子栏目,每次操作都需要在一大堆数据中找对应的游戏名,由于入库的游戏名都是中文,某人想到将中文转换成拼音,然后截取首字母,根据首字母排序搜索。于是,找到了这个function – 在php中将汉字转换成拼音的方法
    2012-09-09
  • 浅谈php数组array_change_key_case() 函数和array_chunk()函数

    浅谈php数组array_change_key_case() 函数和array_chunk()函数

    下面小编就为大家带来一篇浅谈php数组array_change_key_case() 函数和array_chunk()函数。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • php车辆违章查询数据示例

    php车辆违章查询数据示例

    聚合数据全国车辆违章数据接口,目前已经支持300个左右的城市违章查询,已连接上万个APP。本文介绍了php车辆违章查询数据示例,有需要的朋友可以来看一下。
    2016-10-10
  • ThinkPHP的MVC开发机制实例解析

    ThinkPHP的MVC开发机制实例解析

    这篇文章主要介绍了ThinkPHP的MVC开发机制实例解析,通过一个完整的实例讲述MVC的原理,需要的朋友可以参考下
    2014-08-08
  • PHP嵌套输出缓冲代码实例

    PHP嵌套输出缓冲代码实例

    这篇文章主要介绍了PHP嵌套输出缓冲代码实例,本文讲解嵌套使用ob系列函数的实例,需要的朋友可以参考下
    2015-05-05
  • PHP页面输出搜索后跳转下一页的处理方法

    PHP页面输出搜索后跳转下一页的处理方法

    这篇文章主要介绍了PHP页面输出搜索后跳转下一页的处理方法,用js来给url加上搜索的条件,保证跳转下一页时输出的是搜索到的数据,对实现代码感兴趣的朋友可以参考下本文
    2016-09-09

最新评论