A set of PHP reversible encryption and decryption algorithm instance code

  • 2020-12-18 01:46:06
  • OfStack

For most password encryption, we can use md5, sha1 and other methods. Data leakage can be effectively prevented, but these methods are only applicable to data encryption that does not require restoration.

For the information to be restored, a reversible encryption and decryption algorithm is needed.

The following set of PHP functions are the methods to achieve 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);
}

The decryption algorithm is as follows:

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;
}

The above encryption and decryption process requires 1 encryption key (that is, the parameter $key).

$data = 'PHP Encryption and decryption algorithm ';  //  Encrypted message 
$key = '123';     //  The key 
$encrypt = encrypt($data, $key);
$decrypt = decrypt($encrypt, $key);
echo $encrypt, "\n", $decrypt;

The above output will be similar to the following results:

gniCSOzZG+HnS9zcFea7SefNGhXF
PHP encryption and decryption algorithm

It can be seen from the above results that this is a set of reversible encryption and decryption algorithms, which can be used for partial data encryption that needs to be restored.


Related articles: