JavaScript实现的encode64加密算法实例分析
本文实例讲述了JavaScript实现的encode64加密算法。分享给大家供大家参考。具体如下:
这段JavaScript代码可实现encode64加密算法,速度还是相当不错的。
//encode64编解码 (function(){ varcodeChar="PaAwO65goUf7IK2vi9-xq8cFTEXLCDY1Hd3tV0ryzjbpN_BlnSs4mGRkQWMZJeuh"; window.encode64=function(str){ vars=""; vara=strToBytes(str); //取得字串的字节数组,数组长度是字串长度的2倍. varres=a.length%3; //3个字节一组进行处理,余下特殊处理 vari=2,v; for(;i<a.length;i+=3){ //每3个字节用4个字符表示, //相当于3个字符(实际上是6个字节)用8个字符编码(实际为16个字节) //看起来容量膨胀了很多,但是在启用压缩的情况下,这些又被抵消掉了 v=a[i-2]+(a[i-1]<<8)+(a[i]<<16); s+=codeChar.charAt(v&0x3f); s+=codeChar.charAt((v>>6)&0x3f); s+=codeChar.charAt((v>>12)&0x3f); s+=codeChar.charAt((v>>18)); } if(res==1){//字节余一位时候,补2个字符,64*64>256 v=a[i-2]; s+=codeChar.charAt(v&0x3f); s+=codeChar.charAt((v>>6)&0x3f); }elseif(res==2){ //字节余2位的时候,补3个字节,64*64*64>256*256,所以是可行的 v=a[i-2]+(a[i-1]<<8); s+=codeChar.charAt(v&0x3f); s+=codeChar.charAt((v>>6)&0x3f); s+=codeChar.charAt((v>>12)&0x3f); } returns; }; window.decode64=function(codeStr){ vardic=[]; for(vari=0;i<codeChar.length;i++){ dic[codeChar.charAt(i)]=i; } varcode=[]; varres=codeStr.length%4; vari=3,v; for(;i<codeStr.length;i+=4){ v=dic[codeStr.charAt(i-3)]; v+=dic[codeStr.charAt(i-2)]<<6; v+=dic[codeStr.charAt(i-1)]<<12; v+=dic[codeStr.charAt(i)]<<18; code.push(v&0xff,(v>>8)&0xff,(v>>16)&0xff); } if(res==2){ //正确的字节数肯定是余2或3,没有1的情况,如果出现,舍弃. v=dic[codeStr.charAt(i-3)]; v+=dic[codeStr.charAt(i-2)]<<6; code.push(v&0xff); }elseif(res==3){ v=dic[codeStr.charAt(i-3)]; v+=dic[codeStr.charAt(i-2)]<<6; v+=dic[codeStr.charAt(i-1)]<<12; code.push(v&0xff,(v>>8)&0xff); } returnstrFromBytes(code); }; })();
希望本文所述对大家的javascript程序设计有所帮助。