当前位置:首页 > PHP教程 > php应用 > 列表

php加密算法之实现可逆加密算法和解密分享

发布:smiling 来源: PHP粉丝网  添加日期:2020-08-29 19:19:24 浏览: 评论:0 

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

加密算法如下:

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

解密算法如下:

  1. function decrypt($data$key
  2.  $key = md5($key); 
  3.     $x = 0; 
  4.     $data = base64_decode($data); 
  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 .= substr($key$x, 1); 
  14.         $x++; 
  15.     } 
  16.     for ($i = 0; $i < $len$i++) 
  17.     { 
  18.         if (ord(substr($data$i, 1)) < ord(substr($char$i, 1))) 
  19.         { 
  20.             $str .= chr((ord(substr($data$i, 1)) + 256) - ord(substr($char$i, 1))); 
  21.         } 
  22.         else 
  23.         { 
  24.             $str .= chr(ord(substr($data$i, 1)) - ord(substr($char$i, 1))); 
  25.         } 
  26.     } 
  27.     return $str

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

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

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

gniCSOzZG+HnS9zcFea7SefNGhXF

PHP加密解密算法

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

Tags: php加密算法 php逆加密算法

分享到: