前端实用案例程序员

Base64 编码解码 前端方法

2019-04-11  本文已影响0人  一只大橘
**Base64**是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64,所以每6个[比特](http://zh.wikipedia.org/wiki/%E6%AF%94%E7%89%B9)为一个单元,对应某个可打印字符。三个[字节](http://zh.wikipedia.org/w/index.php?title=8%E4%BD%8D%E5%85%83%E7%BB%84&action=edit&redlink=1)有24个比特,对应于4个Base64单元,即3个字节需要用4个可打印字符来表示。它可用来作为电子邮件的传输编码。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9 ,这样共有62个字符,此外两个可打印符号在不同的系统中而不同**(本类库里面用的是`+`,`/`这两个字符)**。一些如[uuencode](http://zh.wikipedia.org/wiki/Uuencode)的其他编码方法,和之后[binhex](http://zh.wikipedia.org/w/index.php?title=Binhex&action=edit&redlink=1)的版本使用不同的64字符集来代表6个二进制数字,但是它们不叫Base64。

Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据。包括MIME的email,email via MIME, 在XML中存储复杂数据.

base64解密操作

var  base= newBase64();

this.checkpiccode=base.decode('value’);

base64加密操作

this._utf8_encode=base._utf8_encode('value’);

functionBase64() {

var_keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=“;

this.decode= function(input) {

varoutput=“”;

varchr1,chr2,chr3;

varenc1,enc2,enc3,enc4;

vari=0;

input=input.replace(/[^A-Za-z0-9\+\/\=]/g,””);

while(i

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= this._utf8_decode(output);

returnoutput;

}

//加密方法

this._utf8_encode = function (string) {string=string.replace(/\r\n/g,"\n");varutftext ="";for(varn =0; n

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;

}

this._utf8_decode= function(utftext) {

varstring=“”;

vari=0;

varc=0

varc1=0;

varc2=0;

while(i

c=utftext.charCodeAt(i);

if(c<128) {

string+=String.fromCharCode(c);

i++;

}else if((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;

}

}

欢迎转载,不是本人原创,也是网上分享找到的资料

上一篇下一篇

猜你喜欢

热点阅读