PHP encryption and decryption function code implementation example

little bottle
Release: 2023-04-06 10:32:02
forward
3058 people have browsed it

This article will take everyone to learn how to use PHP to implement encryption and decryption. The code has certain reference value, and friends in need can take a look.

<?php

//加密函数
function passport_encrypt($txt, $key) {
    srand((double)microtime() * 1000000);
    $encrypt_key = md5(rand(0, 32000));
    $ctr = 0;
    $tmp = &#39;&#39;;
    for($i = 0;$i < strlen($txt); $i++) {
       $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;
       $tmp .= $encrypt_key[$ctr].($txt[$i] ^ $encrypt_key[$ctr++]);
    }
    return base64_encode(passport_key($tmp, $key));
}
//解密函数
function passport_decrypt($txt, $key) {
    $txt = passport_key(base64_decode($txt), $key);
    $tmp = &#39;&#39;;
    for($i = 0;$i < strlen($txt); $i++) {
       $md5 = $txt[$i];
       $tmp .= $txt[++$i] ^ $md5;
    }
    return $tmp;
}
//上面两个函数用到的公共函数
function passport_key($txt, $encrypt_key) {
    $encrypt_key = md5($encrypt_key);
    $ctr = 0;
    $tmp = &#39;&#39;;
    for($i = 0; $i < strlen($txt); $i++) {
       $ctr = $ctr == strlen($encrypt_key) ? 0 : $ctr;
       $tmp .= $txt[$i] ^ $encrypt_key[$ctr++];
    }
    return $tmp;
}

//----------------------------------------
//----------------------------------------
//-------------示例-----------------------
//----------------------------------------
//----------------------------------------
//
$str = &#39;你好,我是+-!少林a b张三丰&#39;;
echo &#39;<br>------key:aaa----------<br>&#39;;
echo $x = passport_encrypt($str,&#39;aaa&#39;);
//值会变,其中一个如下 
//AOdS7lWlU+IM+1fnALBV5QOOV7dchQfEX+MCwgf2U3BXeQcnVuNavgPAA+hbmlLJAWEHIVRnD7hYvgf/U+lS4gCKUrdVvVO3
echo &#39;<br>-----------------------<br>&#39;;
echo passport_decrypt($x,&#39;aaa&#39;); 
echo &#39;<br><br><br><br><br><br><br><br><br><br><br><br>&#39;;

echo &#39;<br>------key:bbb----------<br>&#39;;
echo $y = passport_encrypt($str,&#39;bbb&#39;);
//值会变,其中一个如下
//Ae0F5gD1C+oB9wC/DOZZ6AeKU7MCjleWUbEAmFGuAi4JLF8gUeFW4lKQUrYBmlrAA2MHIVcxBrMFv1PzXOha5QGABb8A7Qu/
echo &#39;<br>-----------------------<br>&#39;;
echo passport_decrypt($y,&#39;bbb&#39;);

?>
Copy after login
<?php
//加解密字符串函数,可以加密中文
/*
//加密
echo $encode = authcode(&#39;爱迪生&#39;, &#39;ENCODE&#39;, &#39;3&#39;); //DvAHOdGFqa8xK4CDLnbr2mE
//解密
echo $decode = authcode($encode, &#39;DECODE&#39;, &#39;3&#39;); //爱迪生
//密钥
$auth_key = 34577;
参数:$string字符串,$operation加密还是解密,$key密钥
*/
function authcode($string, $operation, $key = &#39;&#39;)
{
    $key = md5($key ? $key : $GLOBALS[&#39;auth_key&#39;]);
    $key_length = strlen($key);
    $string = $operation == &#39;DECODE&#39; ? base64_decode($string) : substr(md5($string . $key), 0, 8) . $string;
    $string_length = strlen($string);
    $rndkey = $box = array();
    $result = &#39;&#39;;
    for ($i = 0; $i <= 255; $i++) {
        $rndkey[$i] = ord($key[$i % $key_length]);
        $box[$i] = $i;
    }
    for ($j = $i = 0; $i < 256; $i++) {
        $j = ($j + $box[$i] + $rndkey[$i]) % 256;
        $tmp = $box[$i];
        $box[$i] = $box[$j];
        $box[$j] = $tmp;
    }
    for ($a = $j = $i = 0; $i < $string_length; $i++) {
        $a = ($a + 1) % 256;
        $j = ($j + $box[$a]) % 256;
        $tmp = $box[$a];
        $box[$a] = $box[$j];
        $box[$j] = $tmp;
        $result .= chr(ord($string[$i]) ^ $box[($box[$a] + $box[$j]) % 256]);
    }
    if ($operation == &#39;DECODE&#39;) {
        if (substr($result, 0, 8) == substr(md5(substr($result, 8) . $key), 0, 8)) {
            return substr($result, 8);
        } else {
            return &#39;&#39;;
        }
    } else {
        return str_replace(&#39;=&#39;, &#39;&#39;, base64_encode($result));
    }
}
?>
Copy after login

Related tutorials: PHP video tutorial

The above is the detailed content of PHP encryption and decryption function code implementation example. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:cnblogs.com
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
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template