For most password encryption, we can use md5, sha1 and other methods. Data leakage can be effectively prevented, but these methods only apply to data encryption that does not require restoration.
For information that needs to be restored, a reversible encryption and decryption algorithm needs to be used.
The following set of PHP functions are methods to implement this encryption and decryption:
The encryption algorithm is as follows:
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); } return base64_encode($str); }<br /><br /><span>解密算法如下:</span>
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; }<br /><br /><span>上述加密解密的过程均需要用到一个加密密钥(即参数$key)。</span><br /><br />
$data = 'PHP加密解密算法'; // 被加密信息 $key = '123'; // 密钥 $encrypt = encrypt($data, $key); $decrypt = decrypt($encrypt, $key); echo $encrypt, "\n", $decrypt;<br /><br /><br />
The above will output results similar to the following:
gniCSOzZG+HnS9zcFea7SefNGhXF
PHP encryption and decryption algorithm
As can be seen from the above results, this is a set of reversible encryption and decryption algorithms that can be used to encrypt some data that needs to be restored.
<br /><br />
<br /><br />