Details about how to implement Base64 encoding and decoding in JS

Source: Internet
Author: User
Details about how to implement Base64 encoding and decoding in JS

Base64 is actually a simple replacement encryption method, but BASE64 is often not used to prevent information leakage, and to facilitate transmission, after BASE64 encoding, the information will be longer than the original information, about 4/3 times.

Base64 is a representation of binary data based on 64 printable characters. Because the power of 6 in 2 is equal to 64, every 6 bits are a unit and correspond to a printable character.

Base64 is usually used to represent, transmit, and store binary data when processing text data. Including MIME emails and email via MIME, and storing complex data in XML.

1. encryption and decryption methods:

// 1. encrypt var str = '1970 Chinese content'; var base = new Base64 (); var result = base. encode (str); // document. write (result); // 2. decrypt var result2 = base. decode (result); document. write (result2 );

2. encryption and decryption algorithm encapsulation:

/**** Base64 encode / decode** @author haitao.tu* @date 2010-04-26* @email tuhaitao@foxmail.com**/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(/\r\n/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; }}

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.