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;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。