• 小程序中封装base64


      1 function Base64() {
      2 
      3   // private property  
      4   var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
      5 
      6   // public method for encoding  
      7   this.encode = function (input) {
      8     var output = "";
      9     var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
     10     var i = 0;
     11     input = _utf8_encode(input);
     12     while (i < input.length) {
     13       chr1 = input.charCodeAt(i++);
     14       chr2 = input.charCodeAt(i++);
     15       chr3 = input.charCodeAt(i++);
     16       enc1 = chr1 >> 2;
     17       enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
     18       enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
     19       enc4 = chr3 & 63;
     20       if (isNaN(chr2)) {
     21         enc3 = enc4 = 64;
     22       } else if (isNaN(chr3)) {
     23         enc4 = 64;
     24       }
     25       output = output +
     26         _keyStr.charAt(enc1) + _keyStr.charAt(enc2) +
     27         _keyStr.charAt(enc3) + _keyStr.charAt(enc4);
     28     }
     29     return output;
     30   }
     31 
     32   // public method for decoding  
     33   this.decode = function (input) {
     34     var output = "";
     35     var chr1, chr2, chr3;
     36     var enc1, enc2, enc3, enc4;
     37     var i = 0;
     38     input = input.replace(/[^A-Za-z0-9+/=]/g, "");
     39     while (i < input.length) {
     40       enc1 = _keyStr.indexOf(input.charAt(i++));
     41       enc2 = _keyStr.indexOf(input.charAt(i++));
     42       enc3 = _keyStr.indexOf(input.charAt(i++));
     43       enc4 = _keyStr.indexOf(input.charAt(i++));
     44       chr1 = (enc1 << 2) | (enc2 >> 4);
     45       chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
     46       chr3 = ((enc3 & 3) << 6) | enc4;
     47       output = output + String.fromCharCode(chr1);
     48       if (enc3 != 64) {
     49         output = output + String.fromCharCode(chr2);
     50       }
     51       if (enc4 != 64) {
     52         output = output + String.fromCharCode(chr3);
     53       }
     54     }
     55     output = _utf8_decode(output);
     56     return output;
     57   }
     58 
     59   // private method for UTF-8 encoding  
     60   var _utf8_encode = function (string) {
     61     string = string.replace(/
    /g, "
    ");
     62     var utftext = "";
     63     for (var n = 0; n < string.length; n++) {
     64       var c = string.charCodeAt(n);
     65       if (c < 128) {
     66         utftext += String.fromCharCode(c);
     67       } else if ((c > 127) && (c < 2048)) {
     68         utftext += String.fromCharCode((c >> 6) | 192);
     69         utftext += String.fromCharCode((c & 63) | 128);
     70       } else {
     71         utftext += String.fromCharCode((c >> 12) | 224);
     72         utftext += String.fromCharCode(((c >> 6) & 63) | 128);
     73         utftext += String.fromCharCode((c & 63) | 128);
     74       }
     75 
     76     }
     77     return utftext;
     78   }
     79 
     80   // private method for UTF-8 decoding  
     81   var _utf8_decode = function (utftext) {
     82     var string = "";
     83     var i = 0;
     84     var c = c1 = c2 = 0;
     85     while (i < utftext.length) {
     86       c = utftext.charCodeAt(i);
     87       if (c < 128) {
     88         string += String.fromCharCode(c);
     89         i++;
     90       } else if ((c > 191) && (c < 224)) {
     91         c2 = utftext.charCodeAt(i + 1);
     92         string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
     93         i += 2;
     94       } else {
     95         c2 = utftext.charCodeAt(i + 1);
     96         c3 = utftext.charCodeAt(i + 2);
     97         string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
     98         i += 3;
     99       }
    100     }
    101     return string;
    102   }
    103 }
    104 
    105 
    106 var base = new Base64();
    107 
    108 function encode(str){
    109   return base.encode(str);
    110 }
    111 function decode(str) {
    112   return base.decode(str);
    113 }
    114 function safeEncode(str) {
    115   return encode(str).replace(/[+=/]/g, function (c) {
    116     switch (c) {
    117       case '+': return '.';
    118       case '=': return '-';
    119       case '/': return '_';
    120     }
    121   })
    122 }
    123 
    124 
    125 export {
    126   encode,
    127   decode,
    128   safeEncode
    129 }
  • 相关阅读:
    从Oracle提供两种cube产品说开
    Sql Server DWBI的几个学习资料
    Unload Oracle data into text file
    初学Java的几个tips
    我常用的Oracle知识点汇总
    benefits by using svn
    如何在windows上使用putty来显示远端linux的桌面
    building commercial website using Microsoft tech stack
    Understand Thread and Lock
    Update google calendar by sunbird
  • 原文地址:https://www.cnblogs.com/linsx/p/9255870.html
Copyright © 2020-2023  润新知