base64 算法 java_javaScript base64算法的实现 与 java中的base64 加密 解密

前段时间,工作需要,需要用js和java配套的base64算法,奈何没找到,然后网上抄一套。用起来还是很有效的。

闲言少絮,直接上干货。

js 版base 64 算法  base64.jsvar keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

//将Ansi编码的字符串进行Base64编码

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);

enc3 = ((chr2 & 15) <> 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 

return output;

}

//将Base64编码字符串转换成Ansi编码的字符串

function decode64(input) {

var output = "";

var chr1, chr2, chr3 = "";

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

var i = 0;

if (input.length % 4 != 0) {

return "";

}

var base64test = /[^A-Za-z0-9\+\/\=]/g;

if (base64test.exec(input)) {

return "";

}

do {

enc1 = keyStr.indexOf(input.charAt(i++));

enc2 = keyStr.indexOf(input.charAt(i++));

enc3 = keyStr.indexOf(input.charAt(i++));

enc4 = keyStr.indexOf(input.charAt(i++));

chr1 = (enc1 <> 4);

chr2 = ((enc2 & 15) <> 2);

chr3 = ((enc3 & 3) <

output = output + String.fromCharCode(chr1);

if (enc3 != 64) {

output += String.fromCharCode(chr2);

}

if (enc4 != 64) {

output += String.fromCharCode(chr3);

}

chr1 = chr2 = chr3 = "";

enc1 = enc2 = enc3 = enc4 = "";

} while (i 

return output;

}

function utf16to8(str) {

var out, i, len, c;

out = "";

len = str.length;

for(i = 0; i 

c = str.charCodeAt(i);

if ((c >= 0x0001) && (c <= 0x007F)) {

out += str.charAt(i);

} else if (c > 0x07FF) {

out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));

out += String.fromCharCode(0x80 | ((c >>  6) & 0x3F));

out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));

} else {

out += String.fromCharCode(0xC0 | ((c >>  6) & 0x1F));

out += String.fromCharCode(0x80 | ((c >>  0) & 0x3F));

}

}

return out;

}

function utf8to16(str) {

var out, i, len, c;

var char2, char3;

out = "";

len = str.length;

i = 0;

while(i 

c = str.charCodeAt(i++);

switch(c >> 4) {

case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:

// 0xxxxxxx

out += str.charAt(i-1);

break;

case 12: case 13:

// 110x xxxx   10xx xxxx

char2 = str.charCodeAt(i++);

out += String.fromCharCode(((c & 0x1F) <

break;

case 14:

// 1110 xxxx  10xx xxxx  10xx xxxx

char2 = str.charCodeAt(i++);

char3 = str.charCodeAt(i++);

out += String.fromCharCode(((c & 0x0F) <

((char2 & 0x3F) <

((char3 & 0x3F) <

break;

}

}

return out;

}

在js中的解析例子:

加密var testCode= "test88";

var resultCode= encode64(utf16to8(testCode));

console.log(resultCode);

输出dGVzdDg4

解密var testCode="dGVzdDg4";

resultCode= utf8to16(decode64(testCode));

console.log(resultCode);

输出test88

在java中解析base64编码:

加密String localStr="test88";

String resultStr =Base64.getEncoder().encodeToString(localStr.getBytes());

System.out.println(resultStr);

输出dGVzdDg4

解密String testStr="dGVzdDg4";

String testResult=new String(Base64.getDecoder().decode(testStr));

System.out.println(testResult);

输出test88

附件附上 base64.js   为base64加密解密的js组件,test.html  为在js中的测试文件  test.java  为java中的测试文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值