<返回更多

js中对字符串进行base64编码和解码

2019-10-11    
加入收藏

1.js中对字符串进行base64编码和解码

function Base64() {
 // private property
 _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
 // public method for encoding
 this.encode = function (input) {
 var output = "";
 var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
 var i = 0;
 input = _utf8_encode(input);
 while (i < input.length) {
 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);
 }
 return output;
 }
 // public method for decoding
 this.decode = function (input) {
 var output = "";
 var chr1, chr2, chr3;
 var enc1, enc2, enc3, enc4;
 var i = 0;
 input = input.replace(/[^A-Za-z0-9+/=]/g, "");
 while (i < input.length) {
 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 << 2) | (enc2 >> 4);
 chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
 chr3 = ((enc3 & 3) << 6) | enc4;
 output = output + String.fromCharCode(chr1);
 if (enc3 != 64) {
 output = output + String.fromCharCode(chr2);
 }
 if (enc4 != 64) {
 output = output + String.fromCharCode(chr3);
 }
 }
 output = _utf8_decode(output);
 return output;
 }
 // private method for UTF-8 encoding
 _utf8_encode = function (string) {
 string = string.replace(/rn/g,"n");
 var utftext = "";
 for (var n = 0; n < string.length; n++) {
 var c = string.charCodeAt(n);
 if (c < 128) {
 utftext += String.fromCharCode(c);
 } else if((c > 127) && (c < 2048)) {
 utftext += String.fromCharCode((c >> 6) | 192);
 utftext += String.fromCharCode((c & 63) | 128);
 } else {
 utftext += String.fromCharCode((c >> 12) | 224);
 utftext += String.fromCharCode(((c >> 6) & 63) | 128);
 utftext += String.fromCharCode((c & 63) | 128);
 }
 }
 return utftext;
 }
 // private method for UTF-8 decoding
 _utf8_decode = function (utftext) {
 var string = "";
 var i = 0;
 var c = c1 = c2 = 0;
 while ( i < utftext.length ) {
 c = utftext.charCodeAt(i);
 if (c < 128) {
 string += String.fromCharCode(c);
 i++;
 } else if((c > 191) && (c < 224)) {
 c2 = utftext.charCodeAt(i+1);
 string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
 i += 2;
 } else {
 c2 = utftext.charCodeAt(i+1);
 c3 = utftext.charCodeAt(i+2);
 string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
 i += 3;
 }
 }
 return string;
 }
}

2.html页面,下面看具体代码实现:

<html>
<head>
 <meta charset="utf-8"/>
 <title>base64加密</title>
 <script type="text/JAVAscript" src="/MavenTest/js/base64.js"></script>
 <script type="text/JavaScript">
 var b = new Base64();
 var str1 = b.encode("admin");
 console.log("base64 encode"+str1);
 var str2 = b.encode("guangzhou");
 console.log("base64 encode"+str2);
	//解密
	//str = b.decode(str);
	//console.log("base64 decode"+str);
 function buttonFuc() {
 var condition="name="+str1+"&address="+str2;
 window.location.href="/MavenTest/testpage/base64test?"+condition;
 };
 </script>
</head>
<button οnclick="buttonFuc()">click me will format into new html</button>
<body>
</body>
</html>
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>