加密算法如下:
function encrypt($data, $key)<BR>{<BR> $key = md5($key);<BR> $x = 0;<BR> $len = strlen($data);<BR> $l = strlen($key);<BR> for ($i = 0; $i < $len; $i++)<BR> {<BR> if ($x == $l) <BR> {<BR> $x = 0;<BR> }<BR> $char .= $key{$x};<BR> $x++;<BR> }<BR> for ($i = 0; $i < $len; $i++)<BR> {<BR> $str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);<BR> }<BR> return base64_encode($str);<BR>}<BR>
解密算法如下:
function decrypt($data, $key)<BR>{<BR> $key = md5($key);<BR> $x = 0;<BR> $data = base64_decode($data);<BR> $len = strlen($data);<BR> $l = strlen($key);<BR> for ($i = 0; $i < $len; $i++)<BR> {<BR> if ($x == $l) <BR> {<BR> $x = 0;<BR> }<BR> $char .= substr($key, $x, 1);<BR> <a style="color:transparent">来@源gao*daima.com搞@代#码网</a><strong>搞gaodaima代码</strong> $x++;<BR> }<BR> for ($i = 0; $i < $len; $i++)<BR> {<BR> if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1)))<BR> {<BR> $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));<BR> }<BR> else<BR> {<BR> $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));<BR> }<BR> }<BR> return $str;<BR>}<BR>
上述加密解密的过程均需要用到一个加密密钥(即参数$key)。
$data = 'PHP加密解密算法'; // 被加密信息<BR>$key = '123'; // 密钥<BR>$encrypt = encrypt($data, $key);<BR>$decrypt = decrypt($encrypt, $key);<BR>echo $encrypt, "\n", $decrypt;<BR>
上述将输出类似如下结果:
gniCSOzZG+HnS9zcFea7SefNGhXF<BR>PHP加密解密算法<BR>
从上述结果可以看出,这是一组可逆的加密解密算法,可以用于部分需要还原的数据加密。