龍巖易富通網(wǎng)絡(luò)科技有限公司

龍巖小程序開(kāi)發(fā),龍巖分銷系統(tǒng)

base64的js實(shí)現(xiàn)

2015.11.19 | 2510閱讀 | 0條評(píng)論 | javascript

/**

*

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

      }

}

 

 

測(cè)試頁(yè)面: 

<html>

      <head>

            <script src="lib/base64.js" type="text/javascript"></script>

            <script type="text/javascript">

                  var b = new Base64();

                  var str = b.encode("admin:admin");

                  alert("base64 encode:" + str);

                  str = b.decode(str);

                  alert("base64 decode:" + str);

            </script>

      </head>

      <body>

      </body>

</html>

 

 

來(lái)源:http://tuhaitao.iteye.com/blog/653244


贊 (

發(fā)表評(píng)論

主站蜘蛛池模板: 丁香五月亚洲综合深深爱| 亚洲欧洲日韩国产综合在线二区| 亚洲狠狠婷婷综合久久久久| 天天做天天爱天天爽综合网| 亚洲欧美综合在线天堂| 亚洲综合第一页| 国产一级a爱做综合| 国产精品天干天干综合网| 日日狠狠久久偷偷色综合96蜜桃| 日韩欧国产精品一区综合无码| 亚洲图片综合区| 久久婷婷五月综合国产尤物app | 综合网日日天干夜夜久久| 亚洲性感综合欧美| 色综合久久天天综线观看| 国产亚洲精品精品国产亚洲综合| 国产欧美日韩综合AⅤ天堂| 亚洲欧美综合在线中文| 国产精品日韩欧美久久综合| 色噜噜狠狠色综合久| 亚洲综合一区二区精品导航| 狠狠色噜噜狠狠狠狠色综合久AV| 国产成人精品综合久久久| 精品久久人人做人人爽综合| 久久综合综合久久狠狠狠97色88| 精品综合久久久久久97| 在线亚洲97se亚洲综合在线| 国产成人亚洲综合无码| 伊人网综合影院| 久久婷婷色综合一区二区| 久久综合久久鬼色| 婷婷综合另类小说色区| 国产色综合天天综合网 | 少妇人妻综合久久中文字幕| 精品综合久久久久久98| 五月天激情综合网丁香婷婷| 国产精品无码久久综合| 久久综合久久综合九色| 一本色道久久综合亚洲精品| 亚洲伊人久久综合中文成人网| 久久婷婷五月综合色奶水99啪|