• 一组PHP可逆加密解密算法


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

    对于需要还原的信息,则需要采用可逆的加密解密算法。
    下面一组PHP函数是实现此加密解密的方法:

    加密算法如下:

     1 function encrypt($data, $key)
     2 {
     3     $key    =    md5($key);
     4     $x        =    0;
     5     $len    =    strlen($data);
     6     $l        =    strlen($key);
     7     for ($i = 0; $i < $len; $i++)
     8     {
     9         if ($x == $l) 
    10         {
    11             $x = 0;
    12         }
    13         $char .= $key{$x};
    14         $x++;
    15     }
    16     for ($i = 0; $i < $len; $i++)
    17     {
    18         $str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);
    19     }
    20     return base64_encode($str);
    21 }

    解密算法如下:

     1 function decrypt($data, $key)
     2 {
     3     $key = md5($key);
     4     $x = 0;
     5     $data = base64_decode($data);
     6     $len = strlen($data);
     7     $l = strlen($key);
     8     for ($i = 0; $i < $len; $i++)
     9     {
    10         if ($x == $l) 
    11         {
    12             $x = 0;
    13         }
    14         $char .= substr($key, $x, 1);
    15         $x++;
    16     }
    17     for ($i = 0; $i < $len; $i++)
    18     {
    19         if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1)))
    20         {
    21             $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
    22         }
    23         else
    24         {
    25             $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
    26         }
    27     }
    28     return $str;
    29 }

    上述加密解密的过程均需要用到一个加密密钥(即参数$key)。

    1 $data = 'PHP加密解密算法';    // 被加密信息
    2 $key = '123';    // 密钥
    3 $encrypt = encrypt($data, $key);
    4 $decrypt = decrypt($encrypt, $key);
    5 echo $encrypt, "
    ", $decrypt;

    上述将输出类似如下结果:
    gniCSOzZG+HnS9zcFea7SefNGhXF

    PHP加密解密算法
    从上述结果可以看出,这是一组可逆的加密解密算法,可以用于部分需要还原的数据加密。

  • 相关阅读:
    IDEA快捷键收集
    Jmeter录制HTTPS
    Jmeter 线程组、运行次数参数化
    fiddler 抓取iphone发出的http和https包
    Appium 点击屏幕
    安卓程序如何保证低内存下依然存在
    listview
    数据库操作
    数据存储
    测试
  • 原文地址:https://www.cnblogs.com/zqifa/p/php-6.html
Copyright © 2020-2023  润新知