JavaScript实现的Base64编码和解码

原创 2004年07月06日 13:39:00

<SCRIPT>
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) {
 /* 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)
  return out;
     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)
  return out;
     c4 = base64DecodeChars[c4];
 } while(i < len && c4 == -1);
 if(c4 == -1)
     break;
 out += String.fromCharCode(((c3 & 0x03) << 6) | c4);
    }
    return out;
}

alert(base64encode("?"))
</script>

JS实现UTF8编解码及Base64编解码

最近抽了点时间去了解了下Unicode,UTF-8,Base64之间的关系,以及它们之间 的一些转换规则,并且自己动手按照相应的编码规则实现了相应的编解码,虽然写的很生硬,没有网上一些大神写的那么简洁...
  • Kenny_cn
  • Kenny_cn
  • 2017年07月11日 23:30
  • 989

Base64的使用,解码和编码

Java Base64 这是一个用于编码和解码(encode/decode )base64字符串和数据流的Java开源类库。Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一。可用来作...
  • lzqjfly
  • lzqjfly
  • 2013年04月24日 10:20
  • 2849

Js实现Base64编码、解码

1.加密解密方法使用: //1.加密 var str = '124中文内容'; var base = new Base64(); var result = base.encode(str); //d...
  • u011127019
  • u011127019
  • 2016年06月14日 17:17
  • 27500

原生JS实现base64解码与编码

什么是base64base64是用规定的64种字符来表示任意二进制数据的一种编码格式,而且这64种字符均是可见字符,而之所以要是可见的是因为在不同设备上处理不可见字符时可能发生错误。通常,电子邮件数据...
  • YuChenLi923
  • YuChenLi923
  • 2017年04月14日 11:33
  • 3236

Base64 JAVA后台编码与JS前台解码(解决中文乱码问题)

中文通过Java后台进行Base64编码后传到前台,通过JS进行Base64解码时会出现中文乱码的问题,被这个问题也是困扰了几天,使用jquery.base64.js只能转码非中文字符,经过搜集各种方...
  • z798083517
  • z798083517
  • 2017年07月07日 11:29
  • 1882

URL安全的字符串base64编码和解码

// 如果直接使用 base64_encode 和 base64_decode 方法的话 // 生成的字符串可能不适用URL地址,解决方案: URL安全的字符串编码 function urlsafe_...
  • dabao1989
  • dabao1989
  • 2014年04月15日 21:25
  • 818

Javascript Base64编码与解码

Base64 Encode and Decode var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstu...
  • yanzhibo
  • yanzhibo
  • 2014年02月27日 22:55
  • 20334

Base64的JavaScript实现(支持中文字符)

Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64,所以每6个位元为一个单元,对应某个可打印字符。三个字节有24个位元,对应于4个Base64单元,即3个字节需要...
  • accountwcx
  • accountwcx
  • 2014年04月12日 12:52
  • 18742

C#和JAVA利用BASE64实现图片编码解码

主要针对服务器端和客户端利用BASE64对图片和字符串进行编码解码操作。 客户端是Android,服务器端是webservice,编码解码方式如下: 一、Android 实现图片上传 1.j...
  • sinat_27693393
  • sinat_27693393
  • 2016年07月22日 20:32
  • 1325

Base64编码/解码Delphi源码

Unit CnBase64;InterfaceUses   SysUtils, Windows;Function Base64Encode(InputData: String; Var OutputD...
  • michelsn
  • michelsn
  • 2007年12月05日 16:45
  • 847
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JavaScript实现的Base64编码和解码
举报原因:
原因补充:

(最多只允许输入30个字)