网站地图    收藏   

主页 > php专栏 > php函数大全 >

PHP可逆加密解密算法程序代码 - php函数

来源:自学PHP网    时间:2014-11-25 00:27 作者: 阅读:次

[导读] 我们常用的md5算法从理论上来讲是不可逆的,但是有强大的方法还是可以把md5给算出来,只是根据复杂程度需要的时间不同罢了,但有时我们希望自己数据加密传输之后接受可以解密了,下面...

PHP可逆加密解密算法程序代码

我们常用的md5算法从理论上来讲是不可逆的,但是有强大的方法还是可以把md5给算出来,只是根据复杂程度需要的时间不同罢了,但有时我们希望自己数据加密传输之后接受可以解密了,下面我来给大家提供一个函数.

对于大部分密码加密,我们可以采用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.     }//开源代码phpfensi.com 
  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, "n", $decrypt; 
  6.  
  7. //上述将输出类似如下结果: 
  8. //gniCSOzZG+HnS9zcFea7SefNGhXF 

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

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论