PHP群:95885625 Hbuilder+MUI群:81989597 站长QQ:634381967
    您现在的位置: 首页 > 开发编程 > PHP教程 > 正文

    分享一个好用的函数PHP对字符串加密解密的函数

    作者:admin来源:网络浏览:时间:2020-09-30 00:07:50我要评论
    导读:加密解密在一个系统中的应用是非常常见的需求,PHP做的网站中,也会经常用到一些加密解密的时候。下面介绍一个比较好用的加密解密函数,收...
    加密解密在一个系统中的应用是非常常见的需求,PHP做的网站中,也会经常用到一些加密解密的时候。下面介绍一个比较好用的加密解密函数,收藏下,以后会用得到。

    <?php
    $id = 132;

    $token = encrypt($id, 'E', 'nowamagic');

    echo '加密:'.encrypt($id, 'E', 'nowamagic');
    echo '<br />';

    echo '解密:'.encrypt($token, 'D', 'nowamagic');

    /*********************************************************************
        函数名称:encrypt
        函数作用:加密解密字符串
        使用方法:
        加密     :encrypt('str','E','nowamagic');
        解密     :encrypt('被加密过的字符串','D','nowamagic');
        参数说明:
        $string   :需要加密解密的字符串
        $operation:判断是加密还是解密:E:加密   D:解密
        $key      :加密的钥匙(密匙);
        *********************************************************************/
    function encrypt($string,$operation,$key='')
        {
            $key=md5($key);
            $key_length=strlen($key);
            $string=$operation=='D'?base64_decode($string):substr(md5($string.$key),0,8).$string;
            $string_length=strlen($string);
            $rndkey=$box=array();
            $result='';
            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=='D')
            {
                if(substr($result,0,8)==substr(md5(substr($result,8).$key),0,8))
                {
                    return substr($result,8);
                }
                else
                {
                    return'';
                }
            }
            else
            {
                return str_replace('=','',base64_encode($result));
            }
        }
    ?>
    转载请注明(B5教程网)原文链接:https://b5.mxunkeji.com/content-10-1809-1.html
    相关热词搜索: