Js实现Base64编码与解码
Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符。
Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据。包括MIME的email,emailviaMIME,在XML中存储复杂数据。
1.加密解密方法使用:
//1.加密 varstr='124中文内容'; varbase=newBase64(); varresult=base.encode(str); //document.write(result); //2.解密 varresult2=base.decode(result); document.write(result2);
2.加密、解密算法封装:
/** * *Base64encode/decode * *@authorhaitao.tu *@date2010-04-26 *@emailtuhaitao@foxmail.com * */ functionBase64(){ //privateproperty _keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; //publicmethodforencoding this.encode=function(input){ varoutput=""; varchr1,chr2,chr3,enc1,enc2,enc3,enc4; vari=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; }elseif(isNaN(chr3)){ enc4=64; } output=output+ _keyStr.charAt(enc1)+_keyStr.charAt(enc2)+ _keyStr.charAt(enc3)+_keyStr.charAt(enc4); } returnoutput; } //publicmethodfordecoding this.decode=function(input){ varoutput=""; varchr1,chr2,chr3; varenc1,enc2,enc3,enc4; vari=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); returnoutput; } //privatemethodforUTF-8encoding _utf8_encode=function(string){ string=string.replace(/\r\n/g,"\n"); varutftext=""; for(varn=0;n<string.length;n++){ varc=string.charCodeAt(n); if(c<128){ utftext+=String.fromCharCode(c); }elseif((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); } } returnutftext; } //privatemethodforUTF-8decoding _utf8_decode=function(utftext){ varstring=""; vari=0; varc=c1=c2=0; while(i<utftext.length){ c=utftext.charCodeAt(i); if(c<128){ string+=String.fromCharCode(c); i++; }elseif((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; } } returnstring; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。