<p>1.加密解密方法使用:</p><p>//1.加密</p><p>var str = '124中文内容';</p><p>var base = new Base64();</p><p>var result = base.encode(str);</p><p>//document.write(result);</p><p></p><p>//2.解密</p><p>var result2 = base.decode(result);</p><p>document.write(result2);</p><p>2.加密、解密算法封装:</p><p>/**</p><p>*</p><p>* Base64 encode / decode</p><p>*</p><p>* @author haitao.tu</p><p>* @date 2010-04-26</p><p>* @email tuhaitao@foxmail.com</p><p>*</p><p>*/</p><p></p><p>function Base64() {</p><p></p><p><span class="Apple-tab-span" > </span>// private property</p><p><span class="Apple-tab-span" > </span>_keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";</p><p></p><p><span class="Apple-tab-span" > </span>// public method for encoding</p><p><span class="Apple-tab-span" > </span>this.encode = function (input) {</p><p><span class="Apple-tab-span" > </span>var output = "";</p><p><span class="Apple-tab-span" > </span>var chr1, chr2, chr3, enc1, enc2, enc3, enc4;</p><p><span class="Apple-tab-span" > </span>var i = 0;</p><p><span class="Apple-tab-span" > </span>input = _utf8_encode(input);</p><p><span class="Apple-tab-span" > </span>while (i < input.length) {</p><p><span class="Apple-tab-span" > </span>chr1 = input.charCodeAt(i++);</p><p><span class="Apple-tab-span" > </span>chr2 = input.charCodeAt(i++);</p><p><span class="Apple-tab-span" > </span>chr3 = input.charCodeAt(i++);</p><p><span class="Apple-tab-span" > </span>enc1 = chr1 >> 2;</p><p><span class="Apple-tab-span" > </span>enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);</p><p><span class="Apple-tab-span" > </span>enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);</p><p><span class="Apple-tab-span" > </span>enc4 = chr3 & 63;</p><p><span class="Apple-tab-span" > </span>if (isNaN(chr2)) {</p><p><span class="Apple-tab-span" > </span>enc3 = enc4 = 64;</p><p><span class="Apple-tab-span" > </span>} else if (isNaN(chr3)) {</p><p><span class="Apple-tab-span" > </span>enc4 = 64;</p><p><span class="Apple-tab-span" > </span>}</p><p><span class="Apple-tab-span" > </span>output = output +</p><p><span class="Apple-tab-span" > </span>_keyStr.charAt(enc1) + _keyStr.charAt(enc2) +</p><p><span class="Apple-tab-span" > </span>_keyStr.charAt(enc3) + _keyStr.charAt(enc4);</p><p><span class="Apple-tab-span" > </span>}</p><p><span class="Apple-tab-span" > </span>return output;</p><p><span class="Apple-tab-span" > </span>}</p><p></p><p><span class="Apple-tab-span" > </span>// public method for decoding</p><p><span class="Apple-tab-span" > </span>this.decode = function (input) {</p><p><span class="Apple-tab-span" > </span>var output = "";</p><p><span class="Apple-tab-span" > </span>var chr1, chr2, chr3;</p><p><span class="Apple-tab-span" > </span>var enc1, enc2, enc3, enc4;</p><p><span class="Apple-tab-span" > </span>var i = 0;</p><p><span class="Apple-tab-span" > </span>input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");</p><p><span class="Apple-tab-span" > </span>while (i < input.length) {</p><p><span class="Apple-tab-span" > </span>enc1 = _keyStr.indexOf(input.charAt(i++));</p><p><span class="Apple-tab-span" > </span>enc2 = _keyStr.indexOf(input.charAt(i++));</p><p><span class="Apple-tab-span" > </span>enc3 = _keyStr.indexOf(input.charAt(i++));</p><p><span class="Apple-tab-span" > </span>enc4 = _keyStr.indexOf(input.charAt(i++));</p><p><span class="Apple-tab-span" > </span>chr1 = (enc1 << 2) | (enc2 >> 4);</p><p><span class="Apple-tab-span" > </span>chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);</p><p><span class="Apple-tab-span" > </span>chr3 = ((enc3 & 3) << 6) | enc4;</p><p><span class="Apple-tab-span" > </span>output = output + String.fromCharCode(chr1);</p><p><span class="Apple-tab-span" > </span>if (enc3 != 64) {</p><p><span class="Apple-tab-span" > </span>output = output + String.fromCharCode(chr2);</p><p><span class="Apple-tab-span" > </span>}</p><p><span class="Apple-tab-span" > </span>if (enc4 != 64) {</p><p><span class="Apple-tab-span" > </span>output = output + String.fromCharCode(chr3);</p><p><span class="Apple-tab-span" > </span>}</p><p><span class="Apple-tab-span" > </span>}</p><p><span class="Apple-tab-span" > </span>output = _utf8_decode(output);</p><p><span class="Apple-tab-span" > </span>return output;</p><p><span class="Apple-tab-span" > </span>}</p><p></p><p><span class="Apple-tab-span" > </span>// private method for UTF-8 encoding</p><p><span class="Apple-tab-span" > </span>_utf8_encode = function (string) {</p><p><span class="Apple-tab-span" > </span>string = string.replace(/\r\n/g,"\n");</p><p><span class="Apple-tab-span" > </span>var utftext = "";</p><p><span class="Apple-tab-span" > </span>for (var n = 0; n < string.length; n++) {</p><p><span class="Apple-tab-span" > </span>var c = string.charCodeAt(n);</p><p><span class="Apple-tab-span" > </span>if (c < 128) {</p><p><span class="Apple-tab-span" > </span>utftext += String.fromCharCode(c);</p><p><span class="Apple-tab-span" > </span>} else if((c > 127) && (c < 2048)) {</p><p><span class="Apple-tab-span" > </span>utftext += String.fromCharCode((c >> 6) | 192);</p><p><span class="Apple-tab-span" > </span>utftext += String.fromCharCode((c & 63) | 128);</p><p><span class="Apple-tab-span" > </span>} else {</p><p><span class="Apple-tab-span" > </span>utftext += String.fromCharCode((c >> 12) | 224);</p><p><span class="Apple-tab-span" > </span>utftext += String.fromCharCode(((c >> 6) & 63) | 128);</p><p><span class="Apple-tab-span" > </span>utftext += String.fromCharCode((c & 63) | 128);</p><p><span class="Apple-tab-span" > </span>}</p><p></p><p><span class="Apple-tab-span" > </span>}</p><p><span class="Apple-tab-span" > </span>return utftext;</p><p><span class="Apple-tab-span" > </span>}</p><p></p><p><span class="Apple-tab-span" > </span>// private method for UTF-8 decoding</p><p><span class="Apple-tab-span" > </span>_utf8_decode = function (utftext) {</p><p><span class="Apple-tab-span" > </span>var string = "";</p><p><span class="Apple-tab-span" > </span>var i = 0;</p><p><span class="Apple-tab-span" > </span>var c = c1 = c2 = 0;</p><p><span class="Apple-tab-span" > </span>while ( i < utftext.length ) {</p><p><span class="Apple-tab-span" > </span>c = utftext.charCodeAt(i);</p><p><span class="Apple-tab-span" > </span>if (c < 128) {</p><p><span class="Apple-tab-span" > </span>string += String.fromCharCode(c);</p><p><span class="Apple-tab-span" > </span>i++;</p><p><span class="Apple-tab-span" > </span>} else if((c > 191) && (c < 224)) {</p><p><span class="Apple-tab-span" > </span>c2 = utftext.charCodeAt(i+1);</p><p><span class="Apple-tab-span" > </span>string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));</p><p><span class="Apple-tab-span" > </span>i += 2;</p><p><span class="Apple-tab-span" > </span>} else {</p><p><span class="Apple-tab-span" > </span>c2 = utftext.charCodeAt(i+1);</p><p><span class="Apple-tab-span" > </span>c3 = utftext.charCodeAt(i+2);</p><p><span class="Apple-tab-span" > </span>string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));</p><p><span class="Apple-tab-span" > </span>i += 3;</p><p><span class="Apple-tab-span" > </span>}</p><p><span class="Apple-tab-span" > </span>}</p><p><span class="Apple-tab-span" > </span>return string;</p><p><span class="Apple-tab-span" > </span>}</p><p>}</p>