base64对密码进行加密和解密

2025-11-05 22:06:59

1、先找到登录页面,然后再找到登录的方法。可以看到Service.asExcute('ISignOnByDWR','login' ,[{verifyCode:verifyCode,staffCode:username,password:password}]这里就是把前端的用户名密码传到后端的。不能进行密码明文传输,就要在数据交换之前进行加密。

base64对密码进行加密和解密

2、这个是jsp页面,要想使用base64,要先引入jquery.base64.js,这个要自己下载。

base64对密码进行加密和解密

3、引入之后,就要对用户名,密码进行加密。

var password = $.base64.encode(document.getElementById("password").value);

$.base64.encode  这个就是在进行加密。

base64对密码进行加密和解密

4、这个是定义的base64加密和解密的方法。

;(function($) {

    var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",

        a256 = '',

        r64 = [256],

        r256 = [256],

        i = 0;

    var UTF8 = {

        encode: function(strUni) {

            var strUtf = strUni.replace(/[\u0080-\u07ff]/g, // U+0080 - U+07FF => 2 bytes 110yyyyy, 10zzzzzz

            function(c) {

                var cc = c.charCodeAt(0);

                return String.fromCharCode(0xc0 | cc >> 6, 0x80 | cc & 0x3f);

            })

            .replace(/[\u0800-\uffff]/g, // U+0800 - U+FFFF => 3 bytes 1110xxxx, 10yyyyyy, 10zzzzzz

            function(c) {

                var cc = c.charCodeAt(0);

                return String.fromCharCode(0xe0 | cc >> 12, 0x80 | cc >> 6 & 0x3F, 0x80 | cc & 0x3f);

            });

            return strUtf;

        },

        decode: function(strUtf) {

            var strUni = strUtf.replace(/[\u00e0-\u00ef][\u0080-\u00bf][\u0080-\u00bf]/g, // 3-byte chars

            function(c) { // (note parentheses for precence)

                var cc = ((c.charCodeAt(0) & 0x0f) << 12) | ((c.charCodeAt(1) & 0x3f) << 6) | (c.charCodeAt(2) & 0x3f);

                return String.fromCharCode(cc);

            })

            .replace(/[\u00c0-\u00df][\u0080-\u00bf]/g, // 2-byte chars

            function(c) { // (note parentheses for precence)

                var cc = (c.charCodeAt(0) & 0x1f) << 6 | c.charCodeAt(1) & 0x3f;

                return String.fromCharCode(cc);

            });

            return strUni;

        }

    };

    while(i < 256) {

        var c = String.fromCharCode(i);

        a256 += c;

        r256[i] = i;

        r64[i] = b64.indexOf(c);

        ++i;

    }

    function code(s, discard, alpha, beta, w1, w2) {

        s = String(s);

        var buffer = 0,

            i = 0,

            length = s.length,

            result = '',

            bitsInBuffer = 0;

        while(i < length) {

            var c = s.charCodeAt(i);

            c = c < 256 ? alpha[c] : -1;

            buffer = (buffer << w1) + c;

            bitsInBuffer += w1;

            while(bitsInBuffer >= w2) {

                bitsInBuffer -= w2;

                var tmp = buffer >> bitsInBuffer;

                result += beta.charAt(tmp);

                buffer ^= tmp << bitsInBuffer;

            }

            ++i;

        }

        if(!discard && bitsInBuffer > 0) result += beta.charAt(buffer << (w2 - bitsInBuffer));

        return result;

    }

    var Plugin = $.base64 = function(dir, input, encode) {

            return input ? Plugin[dir](input, encode) : dir ? null : this;

        };

    Plugin.btoa = Plugin.encode = function(plain, utf8encode) {

        plain = Plugin.raw === false || Plugin.utf8encode || utf8encode ? UTF8.encode(plain) : plain;

        plain = code(plain, false, r256, b64, 8, 6);

        return plain + '===='.slice((plain.length % 4) || 4);

    };

    Plugin.atob = Plugin.decode = function(coded, utf8decode) {

        coded = String(coded).split('=');

        var i = coded.length;

        do {--i;

            coded[i] = code(coded[i], true, r64, a256, 6, 8);

        } while (i > 0);

        coded = coded.join('');

        return Plugin.raw === false || Plugin.utf8decode || utf8decode ? UTF8.decode(coded) : coded;

    };

}(jQuery));

5、数据传输到后端也要进行解密。

java后端进行解密。

tring pass=decode(newpwd);

decode就是解密的方法,需要自己定义方法。

base64对密码进行加密和解密

6、decode自定义的方法。

//base64解密方法

public static String decode(String s) {  

        byte[] b = null;  

        String result = null;  

        if (s != null) {  

            BASE64Decoder decoder = new BASE64Decoder();  

            try {  

                b = decoder.decodeBuffer(s);  

                result = new String(b, "utf-8");  

            } catch (Exception e) {  

                e.printStackTrace();  

            }  

        }  

        return result;  

    } 

base64对密码进行加密和解密

7、java端还需要导入一个包,

import sun.misc.BASE64Decoder;

不导入这个包,解密无法使用。

base64对密码进行加密和解密

8、到这里加密和解密就结束了,该进行debug验证了。

先看传入的用户名密码是否转码。

可以看到,用户名密码都已经加密了。

就这样完成了加密和解密。

base64对密码进行加密和解密

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢