JavaScript实现的Base64编码和解码

最新推荐文章于 2025-06-11 15:08:45 发布
转载 最新推荐文章于 2025-06-11 15:08:45 发布 · 1.3k 阅读
· 0
· 0
文章标签:

#javascript #c #function #button #output #input

Web开发文档 专栏收录该内容
14 篇文章
订阅专栏
<HTML>
<HEAD>
<TITLE>Base64</TITLE>
<script language=javascript>
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;
}
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;
}
function doit() {
  var f = document.f
  f.output.value = base64encode(utf16to8(f.source.value))
  f.decode.value = utf8to16(base64decode(f.output.value))
}
</script>
</HEAD>
<BODY>
<H1>Base64</H1>
<FORM NAME="f">
原码<BR>
<TEXTAREA NAME="source" ROWS=4 COLS=60 WRAP="soft"></TEXTAREA><BR><BR>
Base64 encode<BR>
<TEXTAREA NAME="output" ROWS=4 COLS=60 WRAP="soft"></TEXTAREA><BR><BR>
Base64 decode<BR>
<TEXTAREA NAME="decode" ROWS=4 COLS=60 WRAP="soft"></TEXTAREA><BR><BR>
<INPUT TYPE=BUTTON VALUE="转换" ONCLICK="doit()">
</FORM>
</BODY>
 
确定要放弃本次机会?
福利倒计时
: :

立减 ¥

普通VIP年卡可用
立即使用
griefforyou
关注 关注
  • 0
    点赞
  • 踩
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
  • 分享
    复制链接
    分享到 QQ
    分享到新浪微博
    扫一扫
  • 举报
    举报
专栏目录
js base64加密解密
chuwa5121的博客
03-08 2109
function util(){ function Base64() { // private property var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrst...
JS base64 加密解密
09-26
JavaScript 基于 Base64的解密 解密 脚本。用于页面参数的加解密,隐藏敏感信息
参与评论 您还未登录,请先 登录 后发表或查看评论
JavaScript中的Base64编码和解码实践
最新发布
weixin_35749796的博客
06-11 1829
Base64编码是一种基于64个可打印字符来表示二进制数据的编码方法。它通常用于在媒介中传输数据时,由于某些系统限制或格式要求而需要将二进制数据表示为纯文本的情况。Base64编码将原始数据分为6位一组,对应地转换为64个字符集中的一个字符。js-base64库提供了一套完整的API,用于编码和解码Base64字符串。以下是该库中几个核心的方法:: 将字符串或二进制数据编码为Base64格式。: 将Base64编码的字符串解码为原始格式。
js实现base64加密与解密
weixin_48839391的博客
09-12 2987
本文主要介绍JavaScript中使用btoa()和atob()内置函数进行Base64编码与解码的基本方法,以及如何通过CryptoJS库进行加密与解密。
js加密解密base64
qq_44741577的博客
04-07 3135
在JavaScript中,可以使用内置的btoa()函数进行Base64编码,用atob()函数进行Base64解码。
base64:js实现base64编码解码
06-17
js实现base64编码解码 base64编码原理: base64可编码范围(ASCII字符范围内\u0000-\u00ff),所以每个字符必须8位,以3个字符为一组,转换为6bit的字节(3*8=4*6=24). 在每个6bit字节的高位添加0组成8bit的字节,然后将每8...
Js实现Base64编码与解码
10-21
此外,某些Base64编码解码库可能还提供了对UTF-8编码转换的支持,以确保在JavaScript这样的多字节字符环境下编码和解码的正确性。不过需要注意的是,在实际使用中,由于Base64编码后的字符串长度会比原始数据多出1/3...
JavaScript实现Base64编码转换
10-22
在JavaScript中实现Base64编码转换,主要分为将二进制数据转换为Base64编码字符串和将Base64编码字符串解码回二进制数据这两个过程。首先,我们可以创建一张映射表(索引表),将64个不同的字符分别映射为0到63之间...
JS 实现Base64编码与解码实例详解
10-21
在JavaScript中,实现Base64编码与解码可以帮助开发者处理包含二进制数据的场景,如图片、音频等。以下是关于JS实现Base64编码与解码的详细说明: 1. **Base64原理** - Base64使用64个可打印字符(大小写字母、...
Base64编码和解码的应用(前后端程序)
12-17
Base64编码是一种将二进制数据转换为可打印ASCII字符的...前端使用Base64编码图片和文本,后端通过Servlet接口接收并解码,整个流程通过Ajax实现无刷新通信。这样的机制使得二进制数据可以在网络上高效、安全地传输。
js实现的Base64的加密解密方法
04-21
用js写的Base64的加密解密方法。压缩包里有两个文件base64.js和base64Test.html。html页面是用来测试的。js代码大家可以直接用
js实现base64加密
07-12
js实现base64加密
base64加密解密js版
06-22
base64加密解密js版
JS实现的base64加密解密完整实例
10-22
主要介绍了JS实现的base64加密解密,以完整实例形式分析了JavaScript基于base64编码实现加密与解密的具体步骤与相关技巧,并附带了相关的加密解密在线工具地址供大家参考,需要的朋友可以参考下
js的base64加密解密
11-02
纯javascript的base64加密解密工具类,不需要引用额外js文件,轻巧方便。
js实现base64加密解密
热门推荐
包子源的博客
02-28 1万+
// 创建Base64对象 var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e){var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f>2;o=(n&3)>4
JS Base64加密解密
weixin_44953227的博客
01-13 6481
目录 1. 核心代码 2. 完整代码演示 核心代码 function Base64() { // private property const keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; // utf-8加密 const utf8Encode = f...
base64的js实现
:)
04-26 1352
写了一个js类,可以方便base64加密解密: [code="javascript"] /** * * Base64 encode / decode * * @author haitao.tu * @date 2010-04-26 * @email tuhaitao@foxmail.com * */ function Base64() { /...
griefforyou

博客等级

码龄25年
46
原创
4
点赞
25
收藏
126
粉丝
关注
私信

TA的精选

  • 新 WinCE系统启动时自动运行应用程序

    3620 阅读

  • 新 探究CRC32算法实现原理-why table-driven implemention

    4141 阅读

  • 热 SuperSite调用说明 - 论坛篇

    18233 阅读

  • 热 将汉字转换成UTF8编码的URLEncode

    15834 阅读

  • 热 SuperSite调用说明 - 资讯篇

    11675 阅读

查看更多

2010年1篇
2009年7篇
2008年3篇
2006年8篇
2005年9篇
2004年65篇

大家在看

  • 关系型数据库:原理、演进与生态全景——从理论基石到云原生的深度巡礼
  • Pytorch模型复现笔记-FPN特征金字塔讲解+架构搭建(可直接copy运行)+冒烟测试 1314
  • Linux DNS服务解析原理与搭建
  • WhatsApp+ERP 构建跨境电商核心沟通基建
  • 2025年8月广东省及广州、佛山、东莞等地企业可申报项目汇总

分类专栏

  • Web开发技术
    20篇
  • Web开发文档
    14篇
  • 开发技术文档
    11篇
  • 数据库技术
    13篇
  • 杂记
    11篇
  • 杂记
  • 软件工程
    1篇
  • 软件开发技术
    21篇

展开全部 收起

上一篇:
鼠标滚轮消息的捕捉
下一篇:
纯HTML实现圆角表格

目录

展开全部

收起

目录

展开全部

收起

上一篇:
鼠标滚轮消息的捕捉
下一篇:
纯HTML实现圆角表格

分类专栏

  • Web开发技术
    20篇
  • Web开发文档
    14篇
  • 开发技术文档
    11篇
  • 数据库技术
    13篇
  • 杂记
    11篇
  • 杂记
  • 软件工程
    1篇
  • 软件开发技术
    21篇

展开全部 收起

目录

评论
被折叠的  条评论 为什么被折叠? 到【灌水乐园】发言
查看更多评论
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值