Java 和JS Base64加密

项目在登录、注册等场景实现时,经常会用到用户信息前端加密,然后项目后端二次解密,避免信息直接在浏览器上以明文显示。

本文主要介绍了base64加密的方式处理代码,不支持中文

源码如下:

base64.js

// base64加密开始

var keyStr = "ABCDEFGHIJKLMNOP" + "QRSTUVWXYZabcdef" + "ghijklmnopqrstuv"

+ "wxyz0123456789+/" + "=";

function encode64(input) {

var output = "";

var chr1, chr2, chr3 = "";

var enc1, enc2, enc3, enc4 = "";

var i = 0;

do {

chr1 = input.charCodeAt(i++);

chr2 = input.charCodeAt(i++);

chr3 = input.charCodeAt(i++);

enc1 = chr1 >> 2;

enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);

enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);

enc4 = chr3 & 63;

if (isNaN(chr2)) {

enc3 = enc4 = 64;

} else if (isNaN(chr3)) {

enc4 = 64;

}

output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2)

+ keyStr.charAt(enc3) + keyStr.charAt(enc4);

chr1 = chr2 = chr3 = "";

enc1 = enc2 = enc3 = enc4 = "";

} while (i < input.length);

return output;

}

// base64加密结束

JAVA代码如下:

public class Test{

public static void main(String[] args) throws IOException {
String source = "asdklsakjfdlsadjfl12ACB";
BASE64Encoder base64 = new BASE64Encoder();
String result = base64.encode((source).getBytes());
System.out.printf("encode source is %s,result is %s",source,result);
System.out.println("------------------");
BASE64Decoder base64dec = new BASE64Decoder();
System.out.printf("decodeBuffer source is %s,result is %s",result,new String(base64dec.decodeBuffer(result)));
}

}

运行结果如下:

encode source is asdklsakjfdlsadjfl12ACB,result is YXNka2xzYWtqZmRsc2FkamZsMTJBQ0I=------------------

decodeBuffer source is YXNka2xzYWtqZmRsc2FkamZsMTJBQ0I=,result is asdklsakjfdlsadjfl12ACB

Process finished with exit code 0