Base64编码——快速了解

99 阅读4分钟

Base64的由来

目前Base64已经成为网络上常见的传输8Bit字节代码的编码方式之一。在做支付系统时,系统之间的报文交互都需要使用Base64对明文进行转码,然后再进行签名或加密,之后再进行(或再次Base64)传输。那么,Base64到底起到什么作用呢?

在参数传输的过程中经常遇到的一种情况:使用全英文的没问题,但一旦涉及到中文就会出现乱码情况。与此类似,网络上传输的字符并不全是可打印的字符,比如二进制文件、图片等。Base64的出现就是为了解决此问题,它是基于64个可打印的字符来表示二进制的数据的一种方法。

电子邮件刚问世的时候,只能传输英文,但后来随着用户的增加,中文、日文等文字的用户也有需求,但这些字符并不能被服务器或网关有效处理,因此Base64就登场了。随之,Base64在URL、Cookie、网页传输少量二进制文件中也有相应的使用。

Base64 编码说明

Base64 是一种基于 64 个可打印字符来表示二进制数据的表示方法,由于 2^6=64,所以每 6 个比特为一个单元,对应某个可打印字符。

Base64 常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据,包括 MIME 的电子邮件及 XML 的一些复杂数据。

Base64 编码要求把 3 个 8 位字节(38=24)转化为 4 个 6 位的字节(46=24),之后在 6 位的前面补两个 0,形成 8 位一个字节的形式。 如果剩下的字符不足 3 个字节,则用 0 填充,输出字符使用 =,因此编码后输出的文本末尾可能会出现 1 或 2 个 =。

为了保证所输出的编码位可读字符,Base64 制定了一个编码表,以便进行统一转换。编码表的大小为 2^6=64,这也是 Base64 名称的由来。

在 Base64 中的可打印字符包括字母 A-Za-z、数字 0-9,这样共有 62 个字符,此外两个可打印符号在不同的系统中而不同。

编码三个步骤

image.png

image.png

image.png

image.png

总结:

1、一个对象先由ascii码转化为二进制(7个二进制一组)

2、再将它们以6个为一组(不足用0补齐),然后转化为十进制

3、再通过十进制的数字和base64的码值表相互转换得到对应的字符

注意:最后的base64的结果需要是4的倍数,不足用=补齐

Base64编码的应用

image.png Base64的应用非常广泛,以下是一些常见的应用场景:

  1. 电子邮件传输:在早期的电子邮件系统中,只能传输ASCII字符,而无法传输二进制文件或非ASCII字符。Base64编码可以将二进制数据转换为ASCII字符,从而使其可以在电子邮件中传输。
  2. URL传输:在URL中,某些字符(例如特殊字符和空格)需要进行编码,以便正确传输和解析。Base64编码可以用于对这些字符进行编码,使其能够安全地包含在URL中。
  3. 数据存储和传输:在某些情况下,需要将二进制数据存储在文本格式中,或者在网络上进行传输。Base64编码可以将二进制数据转换为文本字符串,以方便存储和传输。
  4. 加密算法:在某些加密算法中,Base64编码被用于将加密后的数据表示为可打印的字符,以便于传输和处理。
  5. 图像传输:在网络应用中,Base64编码可以用于将图像数据转换为文本,以便于在网页中嵌入或传输。

总之,Base64编码在各种应用中起到了将二进制数据转换为文本格式的作用,使得数据可以在不同系统和环境中安全、可靠地传输和处理。

image.png

其他编码方式

只是编码位数 & 编码表不一样

image.png