手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表Tag:base64

常用JS代码

两个常用的JS代码

Utf8
  1. /** 
  2. * 
  3. *  UTF-8 data encode / decode 
  4. *  http://www.webtoolkit.info/ 
  5. * 
  6. **/  
  7.    
  8. var Utf8 = {  
  9.    
  10.     // public method for url encoding  
  11.     encode : function (string) {  
  12.         string = string.replace(/\r\n/g,"\n");  
  13.         var utftext = "";  
  14.    
  15.         for (var n = 0; n < string.length; n++) {  
  16.    
  17.             var c = string.charCodeAt(n);  
  18.    
  19.             if (c < 128) {  
  20.                 utftext += String.fromCharCode(c);  
  21.             }  
  22.             else if((c > 127) && (c < 2048)) {  
  23.                 utftext += String.fromCharCode((c >> 6) | 192);  
  24.                 utftext += String.fromCharCode((c & 63) | 128);  
  25.             }  
  26.             else {  
  27.                 utftext += String.fromCharCode((c >> 12) | 224);  
  28.                 utftext += String.fromCharCode(((c >> 6) & 63) | 128);  
  29.                 utftext += String.fromCharCode((c & 63) | 128);  
  30.             }  
  31.    
  32.         }  
  33.    
  34.         return utftext;  
  35.     },  
  36.    
  37.     // public method for url decoding  
  38.     decode : function (utftext) {  
  39.         var string = "";  
  40.         var i = 0;  
  41.         var c = c1 = c2 = 0;  
  42.    
  43.         while ( i < utftext.length ) {  
  44.    
  45.             c = utftext.charCodeAt(i);  
  46.    
  47.             if (c < 128) {  
  48.                 string += String.fromCharCode(c);  
  49.                 i++;  
  50.             }  
  51.             else if((c > 191) && (c < 224)) {  
  52.                 c2 = utftext.charCodeAt(i+1);  
  53.                 string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));  
  54.                 i += 2;  
  55.             }  
  56.             else {  
  57.                 c2 = utftext.charCodeAt(i+1);  
  58.                 c3 = utftext.charCodeAt(i+2);  
  59.                 string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));  
  60.                 i += 3;  
  61.             }  
  62.    
  63.         }  
  64.    
  65.         return string;  
  66.     }  
  67.    
  68. }  
Base64
  1. /** 
  2. * 
  3. *  Base64 encode / decode 
  4. *  http://www.webtoolkit.info/ 
  5. * 
  6. **/  
  7.    
  8. var Base64 = {  
  9.    
  10.     // private property  
  11.     _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",  
  12.    
  13.     // public method for encoding  
  14.     encode : function (input) {  
  15.         var output = "";  
  16.         var chr1, chr2, chr3, enc1, enc2, enc3, enc4;  
  17.         var i = 0;  
  18.    
  19.         input = Base64._utf8_encode(input);  
  20.    
  21.         while (i < input.length) {  
  22.    
  23.             chr1 = input.charCodeAt(i++);  
  24.             chr2 = input.charCodeAt(i++);  
  25.             chr3 = input.charCodeAt(i++);  
  26.    
  27.             enc1 = chr1 >> 2;  
  28.             enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);  
  29.             enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);  
  30.             enc4 = chr3 & 63;  
  31.    
  32.             if (isNaN(chr2)) {  
  33.                 enc3 = enc4 = 64;  
  34.             } else if (isNaN(chr3)) {  
  35.                 enc4 = 64;  
  36.             }  
  37.    
  38.             output = output +  
  39.             this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +  
  40.             this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);  
  41.    
  42.         }  
  43.    
  44.         return output;  
  45.     },  
  46.    
  47.     // public method for decoding  
  48.     decode : function (input) {  
  49.         var output = "";  
  50.         var chr1, chr2, chr3;  
  51.         var enc1, enc2, enc3, enc4;  
  52.         var i = 0;  
  53.    
  54.         input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");  
  55.    
  56.         while (i < input.length) {  
  57.    
  58.             enc1 = this._keyStr.indexOf(input.charAt(i++));  
  59.             enc2 = this._keyStr.indexOf(input.charAt(i++));  
  60.             enc3 = this._keyStr.indexOf(input.charAt(i++));  
  61.             enc4 = this._keyStr.indexOf(input.charAt(i++));  
  62.    
  63.             chr1 = (enc1 << 2) | (enc2 >> 4);  
  64.             chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);  
  65.             chr3 = ((enc3 & 3) << 6) | enc4;  
  66.    
  67.             output = output + String.fromCharCode(chr1);  
  68.    
  69.             if (enc3 != 64) {  
  70.                 output = output + String.fromCharCode(chr2);  
  71.             }  
  72.             if (enc4 != 64) {  
  73.                 output = output + String.fromCharCode(chr3);  
  74.             }  
  75.    
  76.         }  
  77.    
  78.         output = Base64._utf8_decode(output);  
  79.    
  80.         return output;  
  81.    
  82.     },  
  83.    
  84.     // private method for UTF-8 encoding  
  85.     _utf8_encode : function (string) {  
  86.         string = string.replace(/\r\n/g,"\n");  
  87.         var utftext = "";  
  88.    
  89.         for (var n = 0; n < string.length; n++) {  
  90.    
  91.             var c = string.charCodeAt(n);  
  92.    
  93.             if (c < 128) {  
  94.                 utftext += String.fromCharCode(c);  
  95.             }  
  96.             else if((c > 127) && (c < 2048)) {  
  97.                 utftext += String.fromCharCode((c >> 6) | 192);  
  98.                 utftext += String.fromCharCode((c & 63) | 128);  
  99.             }  
  100.             else {  
  101.                 utftext += String.fromCharCode((c >> 12) | 224);  
  102.                 utftext += String.fromCharCode(((c >> 6) & 63) | 128);  
  103.                 utftext += String.fromCharCode((c & 63) | 128);  
  104.             }  
  105.    
  106.         }  
  107.    
  108.         return utftext;  
  109.     },  
  110.    
  111.     // private method for UTF-8 decoding  
  112.     _utf8_decode : function (utftext) {  
  113.         var string = "";  
  114.         var i = 0;  
  115.         var c = c1 = c2 = 0;  
  116.    
  117.         while ( i < utftext.length ) {  
  118.    
  119.             c = utftext.charCodeAt(i);  
  120.    
  121.             if (c < 128) {  
  122.                 string += String.fromCharCode(c);  
  123.                 i++;  
  124.             }  
  125.             else if((c > 191) && (c < 224)) {  
  126.                 c2 = utftext.charCodeAt(i+1);  
  127.                 string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));  
  128.                 i += 2;  
  129.             }  
  130.             else {  
  131.                 c2 = utftext.charCodeAt(i+1);  
  132.                 c3 = utftext.charCodeAt(i+2);  
  133.                 string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));  
  134.                 i += 3;  
  135.             }  
  136.    
  137.         }  
  138.    
  139.         return string;  
  140.     }  
  141.    
  142. }  

这两个应该是比较常用的了。不管是在AJAX中还是在其他中,都应该是很有用的

Tags: utf8, base64

Base64转换:AQAB=65537,你知道为什么吗?[转]

什么是Base64?

按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列 的8位字节描述为一种不易被人直接识别的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a form that need not be humanly readable.)

为什么要使用Base64?

在设计这个编码的时候,我想设计人员最主要考虑了3个问题:
1.是否加密?
2.加密算法复杂程度和效率
3.如何处理传输?

    加密是肯定的,但是加密的目的不是让用户发送非常安全的Email。这种加密方式主要就是“防君子不防小人”。即达到一眼望去完全看不出内容即可。
基 于这个目的加密算法的复杂程度和效率也就不能太大和太低。和上一个理由类似,MIME协议等用于发送Email的协议解决的是如何收发Email,而并不 是如何安全的收发Email。因此算法的复杂程度要小,效率要高,否则因为发送Email而大量占用资源,路就有点走歪了。

    但 是,如果是基于以上两点,那么我们使用最简单的恺撒法即可,为什么Base64看起来要比恺撒法复杂呢?这是因为在Email的传送过程中,由于历史原 因,Email只被允许传送ASCII字符,即一个8位字节的低7位。因此,如果您发送了一封带有非ASCII字符(即字节的最高位是1)的Email通 过有“历史问题”的网关时就可能会出现问题。网关可能会把最高位置为0!很明显,问题就这样产生了!因此,为了能够正常的传送Email,这个问题就必须 考虑!所以,单单靠改变字母的位置的恺撒之类的方案也就不行了。关于这一点可以参考RFC2046。
基于以上的一些主要原因产生了Base64编码。

» 阅读全文

Tags: base64, 算法