Base64 编码的原理

警告
本文最后更新于 2023-06-09,文中内容可能已过时。

Base64 编码的原理

Base64 是一种编码方式,64 代表 64 个字符:A-Z,a-z,0-9,+,/,也就是说用 Base64 是基于 64 个可打印字符来表示二进制数据的方法。

由于 $log_264=6$,所以在 Base64 中,用 6 Byte 即可完全表达 64 个字符中的任何一个,同时也意味着,一个 Base64 字符可以表达 6 比特二进制数据。

众所周知,ASCII 采用 8 比特表达 256 个字符,所以当我们对一段 ASCII 编码的文本做 Base64 编码时,会怎样呢?

  1. 将 ASCII 编码的文本转成二进制。
  2. 将二进制数据以 6 位为一组,根据 Base64 码表转换为 Base64 编码。

如果不了解 ASCII 编码请看:认识ASCII编码

下面例子展示了对 Man 这个单词做 Base64 编码:

1

Man 转换为二进制为 24 位($3*8=24$),对应 Base64 为 4 位($24/6=4$),正好可以被整除。如果不能被整除会怎样呢?

答:会用字符=补位,比如下面这两个例子:

2

Base64 码表

3

Base64 的特点与实际应用

改变可读性

Base64 是一种全新的编码方式,既可以将「完全不可读」的二进制数据变为「可读」的数据,也可以将「完全可读」的 ASCII 编码变为「人类无法理解」的 Base64 编码字符串。

全部为可打印字符

Base64 编码用到的 64 个字符全部为可打印字符,相比较 ASCII 编码存在不可打印字符,Base64 编码的字符串更适合在网络设备间传输。

占用空间更多

我们可以很容易意识到,表达同样的字符串,Base64 占用的空间更多。


更多与编码技术相关的博文:编码与解码 - 腐蚀脚本

转载声明:本文允许转载,原文链接:Base64 编码的原理 - 腐蚀脚本


参考:https://zh.wikipedia.org/wiki/Base64#.E5.9C.A8URL.E4.B8.AD.E7.9A.84.E5.BA.94.E7.94.A8

Buy me a coffee~
室长 支付宝支付宝
室长 微信微信
0%