好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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

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

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

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

function  encrypt( $data ,  $key )  {    $key  = md5( $key );       $x   = 0;       $len  =  strlen ( $data );       $l   =  strlen ( $key );       for  ( $i  = 0;  $i  <  $len ;  $i ++)      {           if  ( $x  ==  $l )           {            $x  = 0;          }           $char  .=  $key { $x };           $x ++;      }       for  ( $i  = 0;  $i  <  $len ;  $i ++)      {           $str  .=  chr (ord( $data { $i }) + (ord( $char { $i })) % 256);      } //开源代码phpfensi.com        return   base64_encode ( $str );  }  

解密算法代码如下:

function  decrypt( $data ,  $key )  {    $key  = md5( $key );       $x  = 0;       $data  =  base64_decode ( $data );       $len  =  strlen ( $data );       $l  =  strlen ( $key );       for  ( $i  = 0;  $i  <  $len ;  $i ++)      {           if  ( $x  ==  $l )           {            $x  = 0;          }           $char  .=  substr ( $key ,  $x , 1);           $x ++;      }       for  ( $i  = 0;  $i  <  $len ;  $i ++)      {           if  (ord( substr ( $data ,  $i , 1)) < ord( substr ( $char ,  $i , 1)))          {               $str  .=  chr ((ord( substr ( $data ,  $i , 1)) + 256) - ord( substr ( $char ,  $i , 1)));          }           else           {               $str  .=  chr (ord( substr ( $data ,  $i , 1)) - ord( substr ( $char ,  $i , 1)));          }      }       return   $str ;  } 

上述加密解密的过程均需要用到一个加密密钥,即参数$key,代码如下:

$data  =  'PHP加密解密算法' ;   // 被加密信息   $key  =  '123' ;      // 密钥   $encrypt  = encrypt( $data ,  $key );  $decrypt  = decrypt( $encrypt ,  $key );  echo   $encrypt ,  "n" ,  $decrypt ;    //上述将输出类似如下结果:   //gniCSOzZG+HnS9zcFea7SefNGhXF  

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

查看更多关于PHP可逆加密解密算法程序代码 - php函数的详细内容...

  阅读:44次