• PHP的加密解密字符串函数


    程序中经常使用的PHP加密解密字符串函数

    代码如下:

    /*********************************************************************
        函数名称:encrypt
        函数作用:加密解密字符串
        使用方法:
        加密     :encrypt('str','E','nowamagic');
        解密     :encrypt('被加密过的字符串','D','nowamagic');
        参数说明:
        $string   :需要加密解密的字符串
        $operation:判断是加密还是解密:E:加密   D:解密
        $key      :加密的钥匙(密匙);
        
    http://www.cnblogs.com/roucheng/
    *********************************************************************/
        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));
            }
        }

    使用方法:

    $id = 132;
        
    $token = encrypt($id, 'E', 'a');
        
    echo '加密:'.encrypt($id, 'E', 'a');
    echo '<br />';
        
    echo '解密:'.encrypt($token, 'D', 'a');
  • 相关阅读:
    OpenWrt编译系统(1)之make之前
    IoT设备WiFi配网及现状
    Linux系统时间、时区、夏令时杂谈
    串口通信概念整理
    socket编程进阶之路
    段错误
    gitlab将分支代码合并到master上
    dpkg 管理二进制包
    linux 命令关闭网络
    pwn之exp问题反馈和ASLR认知
  • 原文地址:https://www.cnblogs.com/roucheng/p/3504884.html
Copyright © 2020-2023  润新知