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+HnS9zcFea7SefNGhXFPHP加密解密算法,从上述结果可以看出,这是一组可逆的加密解密算法,可以用于部分需要还原的数据加密.
查看更多关于PHP可逆加密解密算法程序代码 - php函数的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did30800