前端js加密后台php解密,⾃定义加密⽅法
应⽤场景
前端html输⼊⽤户名密码之后,使⽤http传到后台,post的内容全部是明⽂,⽤户名和密码通过抓包⼯具可以很容易获取到,所以需要在http 传输之前对密码进⾏加密处理,php收到post内容之后进⾏解密,然后进⾏后续认证处理。
加密解密思路
逐个遍历输⼊的密码字符串,在每个字符前后分别插⼊⼀个随机的字符,静态的随机字符串通过⼤⼩写字母和数字打乱顺序所得。对于字符本⾝,如果存在于静态的字符串中,那么将字符按照静态字符串的顺序后移三位,如此获得最终加密的字符串。解密⽅式逆处理即可。
js加密代码
1function encode(_str){
2var staticchars = "PXhw7UT1B0a9kQDKZsjIASmOezxYG4CHo5Jyfg2b8FLpEvRr3WtVnlqMidu6cN";
3var encodechars = "";
4for(var i=0;i<_str.length;i++){
5var num0 = staticchars.indexOf(_str[i]);
6if(num0 == -1){
7var code = _str[i];
8 }else{
9var code = staticchars[(num0+3)%62];
10 }
11var num1 = parseInt(Math.random()*62,10);
12var num2 = parseInt(Math.random()*62,10);
13 encodechars += staticchars[num1]+code+staticchars[num2];
14 }
15return encodechars;
16 }
1function decode(_str){
2var staticchars = "PXhw7UT1B0a9kQDKZsjIASmOezxYG4CHo5Jyfg2b8FLpEvRr3WtVnlqMidu6cN";
3var decodechars = "";
4for(var i=1;i<_str.length;){
5var num0 = staticchars.indexOf(_str[i]);
6if(num0 == -1){
7var code = _str[i];
8 }else{
9var code = staticchars[(num0+59)%62];
10 }
11 decodechars += code;
12 i = i+3;
13 }
14return decodechars;
15 }
php解密代码
1public function decode($str){
2$staticchars = "PXhw7UT1B0a9kQDKZsjIASmOezxYG4CHo5Jyfg2b8FLpEvRr3WtVnlqMidu6cN";
3$decodechars = "";
4for($i=1;$i<strlen($str);){
5$num0 = strpos($staticchars, $str[$i]);
6if($num0 !== false){
7$num1 = ($num0+59)%62;
8$code = $staticchars[$num1];
9 }else{
10$code = $str[$i];
11 }
12$decodechars .= $code;
13$i+=3;
14 }
15return$decodechars;js代码加密软件
16 }
原密码
admin!@#123
加密后的密码
(插⼊的字符是随机获取的,所以加密的密码每次都不⼀样)
aQfacYtzkU64fMYe!VV@AY#KdaDZF9oV0
特别说明
上⾯这种加密⽅式只是进⾏了⼀种简单的伪装,通过分析JS代码是很容易破解的,要求不⾼可以使⽤。为了规避抓包分析导致密码泄露,可
以使⽤https进⾏传输。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论