Base64 编码与解码详解

侯览
• 阅读 5397

Base64 是基于 64 个可打印字符 A-Z、a-z、0-9、+、/ 来表示二进制数据的表示方法,常用于数据在网络中的传输。本篇将分别介绍其编码、解码以及实际运用。

Base64 编码

Base64 本质是一种将二进制转为文本的方案。基本规则如下:

  • 编码时候选用 64 (大小写英文字母,数字,+ /)个字符以及用作补位的=来表示
  • 在编码的时候,将3个字节变为4个字节,4个字节的高两位都用 00 来填充,后 6 位来表示 64 个字符。

以一个实际的例子 "YOU" 为例,其编码过程如下:

Base64 编码与解码详解
由上表格可知 "YOU"对应的 Base64 编码为:"WU9V"。

对于要待编码的字符数如果不是 3 的倍数时候,会用 0 去填充,编码出来后用 = 号表示,如: "ME" 其编码如下:
Base64 编码与解码详解

Base64 解码

将 4 个字节变为 3 个字节;

  • 将 24 bit 左移 16 位,与 255 进行与操作,获得第一个字符,
  • 将 24 bit 左移 8 位,与 255 进行与操作,获得第二个字符,
  • 将 24 bit 与 255 进行与操作,获取第三个字符

Base64 实现与运用场景

在 Node 中提供 Buffer 模块,可以进行二进制或者字符与 Base64 的想换转换,其代码如下:

const buf2 = Buffer.alloc(2);
buf2.write("M", 0);
buf2.write("E", 1);
buf2.toString("base64"); //TUU=
// base64 解码
const decodeBase64 = new Buffer("TUU=", "base64").toString(); //ME 

Base64 有着广泛的使用,如:

  • 对不支持二进制传输的场景, 将二进制数据编码成 Base64 传输给服务器
  • Base64 编码图片
  • MIME, 电子邮件系统中使用 Base64 编码后传输

参考资料

[1] Base64 的原理、实现及应用

[2] Base64是如何进行的

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java 实现PHP gzcompress 功能
为了直观加了base64 PHP代码:<?php$agzcompress("abc");echobase64_encode($a);//输出:eJxLTEoGAAJNASc解码:gzuncompress();源码提示默认使用的是zlib的 deflate进行编码的;
Wesley13 Wesley13
3年前
java最常用的几种加密算法
1\.BASE64Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。Base64编码可用于在HTTP环境下传递较长的标识信息。例如,在JavaPersistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128bit的UUI
Stella981 Stella981
3年前
Base64编码
Base64的来源Base64的主要用途是将不可打印字符转换成可打印字符,而什么需要这样转换呢?因为有些网络传输渠道并不能支持传输所有字节,一些不可见字符(如控制字符)在传统的邮件系统中就无法传输,而例如图片文件不可能每个字节都是可见字符,这样就导致用途这些渠道的用途受到很大限制。Base64正是解决这一问题,通过64个可见字符来编码各种字符,使得数
Wesley13 Wesley13
3年前
Java Base64 编码解码方案总结
Java技术栈,每天给你诚意满满的干货Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便。在实际应用上,Base64除了能将Binary资料可视化之外,也常用来表示字串加密过后的内容。如果要使用Java程式语言来实作Base64的编码与解码功
Wesley13 Wesley13
3年前
Java base64编码解码工具类
前几天无意中看到Java中有Base64编码,不解的我去百科了一下,了解了Base64的基本使用和实现原理,于是在空暇时自己手动写了一个,这个类可以完成对字母数字的编码和解码工作,但是对于中文,还没有仔细研究其编码的实现过程。至于什么是Base64,用它来干什么,请移步到:http://zh.wikipedia.org/zhcn/Base64(http
Stella981 Stella981
3年前
JavaScript用btoa和atob来编码解码Base64
btoa和atob是window对象的两个函数,其中btoa是binarytoascii,用于将binary的数据用ascii码表示,即Base64的编码过程,而atob则是asciitobinary,用于将ascii码解析成binary数据,看一个例子://Definethestringvarstring'Hel
Wesley13 Wesley13
3年前
Html5 FileReader 对文件进行Base64编码
以Base64进行编码的数据Url开始越来越广泛的被应用起来,原来做Base64转换要自己写一个小程序来转,其实Html5的FileReader的readAsDataURL方法读取出的数据就已经是Base64数据格式的Url了,利用FileReader实现一个对本地文件进行读取并且转换为Base64Url的页面也非常简单。页面地址:http://z
Stella981 Stella981
3年前
Base64 的原理、实现及应用
Base64编码是基于64个字符(字符分别为:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxzy0123456789/)的编码方式,因为2的6次方正好为64,所以我们用6bit就可以表示出64个字符,eg:000000对应'A',000001对应'B',111111对应'/'。转换表如下:
Easter79 Easter79
3年前
Tomcat容器管理安全的几种验证方式
当访问服务器中受保护的资源时,容器管理的验证方法可以控制确认用户身份的方式。Tomcat支持四种容器管理的安全防护,它们是:BASIC(基本验证):通过HTTP验证,需要提供base64编码文本的用户口令DIGEST(摘要验证):通过HTTP验证,需要提供摘要编码字符串的用户口令FORM(表单验证):在
马尚 马尚
1年前
python识别验证码
导入所需模块和库:导入了用于发送HTTP请求、处理正则表达式、Base64编码等功能的Python模块。pythonimportrequestsimporttimeimportjsonimportreimportbase64定义函数解析Cookie字符串: