JS实现的base64加密解密完整实例
本文实例讲述了JS实现的base64加密解密。分享给大家供大家参考,具体如下:
完整的代码:
<HTML> <HEAD> <TITLE>Base64</TITLE> <scriptlanguage=javascript> varbase64EncodeChars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; varbase64DecodeChars=newArray( -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63, 52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1, -1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14, 15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1, -1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40, 41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1); <HTML> <HEAD> <TITLE>Base64</TITLE> <scriptlanguage=JavaScript> varbase64EncodeChars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; varbase64DecodeChars=newArray( -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63, 52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1, -1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14, 15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1, -1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40, 41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1); functionbase64encode(str){ varout,i,len; varc1,c2,c3; len=str.length; i=0; out=""; while(i<len){ c1=str.charCodeAt(i++)&0xff; if(i==len) { out+=base64EncodeChars.charAt(c1>>2); out+=base64EncodeChars.charAt((c1&0x3)<<4); out+="=="; break; } c2=str.charCodeAt(i++); if(i==len) { out+=base64EncodeChars.charAt(c1>>2); out+=base64EncodeChars.charAt(((c1&0x3)<<4)|((c2&0xF0)>>4)); out+=base64EncodeChars.charAt((c2&0xF)<<2); out+="="; break; } c3=str.charCodeAt(i++); out+=base64EncodeChars.charAt(c1>>2); out+=base64EncodeChars.charAt(((c1&0x3)<<4)|((c2&0xF0)>>4)); out+=base64EncodeChars.charAt(((c2&0xF)<<2)|((c3&0xC0)>>6)); out+=base64EncodeChars.charAt(c3&0x3F); } returnout; } functionbase64decode(str){ varc1,c2,c3,c4; vari,len,out; len=str.length; i=0; out=""; while(i<len){ /*c1*/ do{ c1=base64DecodeChars[str.charCodeAt(i++)&0xff]; }while(i<len&&c1==-1); if(c1==-1) break; /*c2*/ do{ c2=base64DecodeChars[str.charCodeAt(i++)&0xff]; }while(i<len&&c2==-1); if(c2==-1) break; out+=String.fromCharCode((c1<<2)|((c2&0x30)>>4)); /*c3*/ do{ c3=str.charCodeAt(i++)&0xff; if(c3==61) returnout; c3=base64DecodeChars[c3]; }while(i<len&&c3==-1); if(c3==-1) break; out+=String.fromCharCode(((c2&0XF)<<4)|((c3&0x3C)>>2)); /*c4*/ do{ c4=str.charCodeAt(i++)&0xff; if(c4==61) returnout; c4=base64DecodeChars[c4]; }while(i<len&&c4==-1); if(c4==-1) break; out+=String.fromCharCode(((c3&0x03)<<6)|c4); } returnout; } functionutf16to8(str){ varout,i,len,c; out=""; len=str.length; for(i=0;i<len;i++){ c=str.charCodeAt(i); if((c>=0x0001)&&(c<=0x007F)){ out+=str.charAt(i); }elseif(c>0x07FF){ out+=String.fromCharCode(0xE0|((c>>12)&0x0F)); out+=String.fromCharCode(0x80|((c>>6)&0x3F)); out+=String.fromCharCode(0x80|((c>>0)&0x3F)); }else{ out+=String.fromCharCode(0xC0|((c>>6)&0x1F)); out+=String.fromCharCode(0x80|((c>>0)&0x3F)); } } returnout; } functionutf8to16(str){ varout,i,len,c; varchar2,char3; out=""; len=str.length; i=0; while(i<len){ c=str.charCodeAt(i++); switch(c>>4) { case0:case1:case2:case3:case4:case5:case6:case7: //0xxxxxxx out+=str.charAt(i-1); break; case12:case13: //110xxxxx10xxxxxx char2=str.charCodeAt(i++); out+=String.fromCharCode(((c&0x1F)<<6)|(char2&0x3F)); break; case14: //1110xxxx10xxxxxx10xxxxxx char2=str.charCodeAt(i++); char3=str.charCodeAt(i++); out+=String.fromCharCode(((c&0x0F)<<12)| ((char2&0x3F)<<6)| ((char3&0x3F)<<0)); break; } } returnout; } functiondoit(){ varf=document.f f.output.value=base64encode(utf16to8(f.source.value)) f.decode.value=utf8to16(base64decode(f.output.value)) } </script> </HEAD> <BODY> <H1>Base64</H1> <FORMNAME="f"> 原码<BR> <TEXTAREANAME="source"ROWS=4COLS=60WRAP="soft"></TEXTAREA><BR><BR> Base64encode<BR> <TEXTAREANAME="output"ROWS=4COLS=60WRAP="soft"></TEXTAREA><BR><BR> Base64decode<BR> <TEXTAREANAME="decode"ROWS=4COLS=60WRAP="soft"></TEXTAREA><BR><BR> <INPUTTYPE=BUTTONVALUE="转换"ONCLICK="doit()"> </FORM> </BODY>
关于base64加密解密还可参看本站在线工具:
BASE64编码解码工具
更多加密解密内容还可参考:
MD5在线加密工具
URL网址16进制加密工具
迅雷、快车、旋风URL加密/解密工具
在线SHA1加密工具
更多关于JavaScript相关内容可查看本站专题:《JavaScript加密解密技巧汇总》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。