马富天PHP博客

PHP 含秘钥的可逆加密解密算法

学习笔记 网上转载 2017-07-27 10:25:12 10 0

【摘要】对于大部分密码加密,我们可以采用md5、sha1等方法。可以有效防止数据泄露,但是这些方法仅适用于无需还原的数据加密。对于需要还原的信息,则需要采用可逆的加密解密算法。

下面一组 PHP 函数是实现此加密解密的方法:

  1. //  加密算法
  2. function encrypt($data, $key)
  3. {
  4.     $key = md5($key);
  5.     $x = 0;
  6.     $len = strlen($data);
  7.     $l = strlen($key);
  8.     $char = '';
  9.     $str = '';
  10.     for ($i = 0; $i < $len; $i++)
  11.     {
  12.         if ($x == $l) 
  13.         {
  14.             $x = 0;
  15.         }
  16.         $char .= $key{$x};
  17.         $x++;
  18.     }
  19.     for ($i = 0; $i < $len; $i++)
  20.     {
  21.         $str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);
  22.     }
  23.     return base64_encode($str);
  24. }
  25. //  解密算法
  26. function decrypt($data, $key)
  27. {
  28.     $key = md5($key);
  29.     $x = 0;
  30.     $data = base64_decode($data);
  31.     $len = strlen($data);
  32.     $l = strlen($key);
  33.     $char = '';
  34.     $str = '';
  35.     for ($i = 0; $i < $len; $i++)
  36.     {
  37.         if ($x == $l) 
  38.         {
  39.             $x = 0;
  40.         }
  41.         $char .= substr($key, $x, 1);
  42.         $x++;
  43.     }
  44.     for ($i = 0; $i < $len; $i++)
  45.     {
  46.         if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1)))
  47.         {
  48.             $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
  49.         }
  50.         else
  51.         {
  52.             $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
  53.         }
  54.     }
  55.     return $str;
  56. }
  57. //  加密解密均需要用同一个加密密钥
  58. $data = 'PHP含秘钥的加密解密算法';        // 被加密信息
  59. $key = 'www.mafutian.net';                  // 密钥
  60. $encrypt = encrypt($data, $key);
  61. $decrypt = decrypt($encrypt, $key);
  62. echo '明文:'.$data;
  63. echo '<br />';
  64. echo '密文:'.$encrypt;
  65. echo '<br />';
  66. echo '明文:'.$decrypt;

执行结果如图所示:

请输入图片名称

本文代码摘自网上,个人觉得非常具有实用性,所以转载收藏一下。实现了 PHP 通过一个加密秘钥实现对数据加密解密的过程。

版权归 马富天PHP博客 所有

本文标题:《PHP 含秘钥的可逆加密解密算法》

本文链接地址:http://www.mafutian.net/292.html

转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

0

0

上一篇《 百度联盟广告 js 代码多次重复引入解决办法,百度联盟广告异步加载 》 下一篇《 【PHP 面试真题】如何解决网站中输出的系统当前时间与本地的当前时间不符合的问题? 》
分享到:

暂无评论

评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码