当前位置:编程学习 > asp >>

前端js加密后台php解密,自定义加密方法


应用场景

前端html输入用户名密码之后,使用http传到后台,post的内容全部是明文,用户名和密码通过抓包工具可以很容易获取到,所以需要在http传输之前对密码进行加密处理,php收到post内容之后进行解密,然后进行后续认证处理。

加密解密思路

逐个遍历输入的密码字符串,在每个字符前后分别插入一个随机的字符,静态的随机字符串通过大小写字母和数字打乱顺序所得。对于字符本身,如果存在于静态的字符串中,那么将字符按照静态字符串的顺序后移三位,如此获得最终加密的字符串。解密方式逆处理即可。

js加密代码
function encode(_str){
    var staticchars = "PXhw7UT1B0a9kQDKZsjIASmOezxYG4CHo5Jyfg2b8FLpEvRr3WtVnlqMidu6cN";
    var encodechars = "";
    for(var i=0;i<_str.length;i++){
        var num0 = staticchars.indexOf(_str[i]);
        if(num0 == -1){
            var code = _str[i];
        }else{
            var code = staticchars[(num0+3)%62];
        }
        var num1 = parseInt(Math.random()*62,10);
        var num2 = parseInt(Math.random()*62,10);
        encodechars += staticchars[num1]+code+staticchars[num2];
    }
    return encodechars;
}


js解密代码
function decode(_str){
    var staticchars = "PXhw7UT1B0a9kQDKZsjIASmOezxYG4CHo5Jyfg2b8FLpEvRr3WtVnlqMidu6cN";
    var decodechars = "";
    for(var i=1;i<_str.length;){
        var num0 = staticchars.indexOf(_str[i]);
        if(num0 == -1){
            var code = _str[i];
        }else{
            var code = staticchars[(num0+59)%62];
        }
        decodechars += code;
        i = i+3;
    }
    return decodechars;
}


php解密代码
 2         $staticchars = "PXhw7UT1B0a9kQDKZsjIASmOezxYG4CHo5Jyfg2b8FLpEvRr3WtVnlqMidu6cN"; 复制代码
原密码
public function decode($str){
        $staticchars = "PXhw7UT1B0a9kQDKZsjIASmOezxYG4CHo5Jyfg2b8FLpEvRr3WtVnlqMidu6cN";
        $decodechars = "";
        for($i=1;$i<strlen($str);){
            $num0 = strpos($staticchars, $str[$i]);
            if($num0 !== false){
                $num1 = ($num0+59)%62;
                $code = $staticchars[$num1];
            }else{
                $code = $str[$i];
            }
            $decodechars .= $code;
            $i+=3;
        }
        return $decodechars;
    }

admin!@#123

加密后的密码

(插入的字符是随机获取的,所以加密的密码每次都不一样)

aQfacYtzkU64fMYe!VV@AY#KdaDZF9oV0

特别说明

上面这种加密方式只是进行了一种简单的伪装,通过分析JS代码是很容易破解的,要求不高可以使用。为了规避抓包分析导致密码泄露,可以使用https进行传输
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,