Home > Backend Development > PHP Tutorial > PHP reversible encryption and decryption algorithm program code_PHP tutorial

PHP reversible encryption and decryption algorithm program code_PHP tutorial

WBOY
Release: 2016-07-13 17:11:10
Original
815 people have browsed it

Theoretically speaking, our commonly used md5 algorithm is irreversible, but there are powerful methods that can still calculate md5. It just takes different time depending on the complexity. But sometimes we hope that our data can be accepted after encrypted transmission. Decrypted, let me provide you with a function.

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

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 processes require the use of an encryption key (i.e. parameter $key).

The code is as follows Copy code
 代码如下 复制代码

$data = 'PHP加密解密算法';  // 被加密信息
$key = '123';     // 密钥
$encrypt = encrypt($data, $key);
$decrypt = decrypt($encrypt, $key);
echo $encrypt, "n", $decrypt;

$data = 'PHP encryption and decryption algorithm'; // Encrypted information
$key = '123'; // Key
$encrypt = encrypt($data, $key);
$decrypt = decrypt($encrypt, $key);
echo $encrypt, "n", $decrypt;

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.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/629603.htmlTechArticleThe md5 algorithm we commonly use is irreversible in theory, but there are powerful methods that can still calculate md5 It just takes different time depending on the complexity, but sometimes I...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template