欢迎您访问我爱IT技术网,今天小编为你分享的javascript教程:【JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)】,下面是详细的讲解!
JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)
<script language='javascript'>
function utf16to8(str) {
var out, 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);
} else if (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));
}
}
return out;
}
function utf8to16(str) {
var out, i, len, c;
var char2, char3;
out="";
len=str.length;
i=0;
while(i < len) {
c=str.charCodeAt(i++);
switch(c >> 4)
{
case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:
// 0xxxxxxx
out +=str.charAt(i-1);
break;
case 12: case 13:
// 110x xxxx 10xx xxxx
char2=str.charCodeAt(i++);
out +=String.fromCharCode(((c & 0x1F) << 6) | (char2 & 0x3F));
break;
case 14:
// 1110 xxxx 10xx xxxx 10xx xxxx
char2=str.charCodeAt(i++);
char3=str.charCodeAt(i++);
out +=String.fromCharCode(((c & 0x0F) << 12) |
((char2 & 0x3F) << 6) |
((char3 & 0x3F) << 0));
break;
}
}
return out;
}
var base64EncodeChars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var base64DecodeChars=new Array(
-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);
function base64encode(str) {
var out, i, len;
var c1, 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);
}
return out;
}
function base64decode(str) {
var c1, c2, c3, c4;
var i, len, out;
len=str.length;
i=0;
out="";
while(i < len) {
do {
c1=base64DecodeChars[str.charCodeAt(i++) & 0xff];
} while(i < len && c1==-1);
if(c1==-1)
break;
do {
c2=base64DecodeChars[str.charCodeAt(i++) & 0xff];
} while(i < len && c2==-1);
if(c2==-1)
break;
out +=String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));
do {
c3=str.charCodeAt(i++) & 0xff;
if(c3==61)
return out;
c3=base64DecodeChars[c3];
} while(i < len && c3==-1);
if(c3==-1)
break;
out +=String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2));
do {
c4=str.charCodeAt(i++) & 0xff;
if(c4==61)
return out;
c4=base64DecodeChars[c4];
} while(i < len && c4==-1);
if(c4==-1)
break;
out +=String.fromCharCode(((c3 & 0x03) << 6) | c4);
}
return out;
}
//input base64 encode
function strdecode(str){
return utf8to16(base64decode(str));
}
关于JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)的用户互动如下:
相关问题:在Java中如何进行BASE64编码和解码
答:import sun.misc.BASE64Encoder; import sun.misc.BASE64Decoder; // 将 s 进行 BASE64 编码 public static String getBASE64(String s) { if (s == null) return null; return (new sun.misc.BASE64Encoder()).encode( s.getBytes() ); } // 将... >>详细
相关问题:何谓Base64 加密算法及原理,如何使用 PHP 实现一...
答:就是可以解的加密方式 base64_encode(); base64_decode(); 因为一些字符,如链接get方式, 浏览器不可以带很多特殊字符,导致php获取不到正确的信息,用加密一下就好多了, 不过注意大小写。 >>详细
相关问题:base64编码,用js编写调用,怎么弄
答:function Base64() { // private property _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; // public method for encoding this.encode = function (input) { var output = ""; var chr1, chr2, chr3, enc1, ... >>详细
- 【firefox】firefox浏览器不支持innerText的解决
- 【Extjs】Extjs学习过程中新手容易碰到的低级错误
- 【clearInterval】js clearInterval()方法的定义
- 【dom】javascript dom追加内容实现示例-追加内容
- 【checkbox】让checkbox不选中即将选中的checkbox
- 【Array】js中更短的 Array 类型转换-类型转换
- 【append】append和appendTo的区别以及appendChil
- 【ExtJs】ExtJs 表单提交登陆实现代码-表单提交-
- 【ajax清除浏览器缓存】Ajax清除浏览器js、css、
- 【AJAX】AJAX异步从优酷专辑中采集所有视频及信息
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
