Skip to content
On this page

Base64 转换工具

知识点

Base64 编码原理

Base64 利用 64 个字符(A-Za-z0-9+/)编码文本,原理是将字符串以每 3 个 8 比特(bit)的子序列拆分成 4 个 6 比特(bit)的子序列,再将得到的子序列查找 Base64 编码索引表,得到对应的字符拼接成新的字符串的一种编码方式

  • a 的二进制为 0110 0001
  • b 的二进制为 0110 0010
  • 2 的二进制为 0011 0010

Base64 编码索引表

  • Y 的二进制为 0110 00
  • W 的二进制为 0101 10
  • I 的二进制为 0010 00
  • y 的二进制为 1100 10

划分前 0110 0001、0110 0010、0011 0010,即 a、b、2

划分后 0110 00、0101 10、0010 00、1100 10,按照 Base64 编码表 Y、W、I、y

所以 ab2 的 Base64 编码为 YWIy

为什么 Base64 编码后的大小是原来的 4/3 倍?

因为一个字节需要 8 个比特存储,所以我们要把 6 个比特往前面补两位 0,补足 8 个比特。如下所示

补足前 0110 00、0101 10、0010 00、1100 10

补足后 000110 00、000101 10、000010 00、001100 10

很明显,补足后所需的比特为 32 个,是原来所需的 24 个的 4/3 倍,所以 Base64 编码后的大小是原来的 4/3 倍

Base64url 与 Base64 的区别

标准 Base64 字符串的 +/ 在 url 里会被编码成 %2B, %2F,这样会让 url 更长,所以出现了一种变种 base64url,采用 64 个字符(A-Za-z0-9-_)编码文本

致谢