My Profile Photo

Justin Chou


人生的奇妙在于,将不可能变成可能。


什么是 base64 ?

Base64 是一种编码格式,可以将明文变成密文来发送,并非是一种加密方式。

实现原理如下:

  1. 将字符串 Man 用16进制表示分别为 0x4D 0x61 0x6E
  2. 16进制转换成二进制表示为 01001101 01100001 01101110
  3. 将步骤二中的二进制数合并之后 010011010110000101101110, 再以6位二进制数位为一组,进行重新分组,即 010011 010110 000101 101110
  4. 每组新组成的二进制数表示 0 ~ (2^6 -1)的数值,可以对应到 Base64 的字母表中去,这样可以保证一定的安全性。在进行了 Base64 编码之后,Man 变成了 TWFu

Base64 中64是代表了 2^6 = 64,Base 就是基于这64个字母来进行编码的意思吧?

重点
如果以6位为一组对二进制数进行分组的话,很有可能出现多余的二进制位,无法得到完整的一组6位二进制数。在这种情况下,需要在这串二进制数后面进行补位,添加 0 即可。需要注意的是添加0,直到这一串二进制数的位数为 24 的整数倍。
为什么是24? 24 是 6 和 8 的最小公倍数,这样方便进行重新编码和分组。

假如说分完组之后,没有剩余,但是这串二进制数的位数并不是 24 的整数倍,该怎么办?
如果出现这样的问题,直接在这串二进制数后添加完整的一组 000000 来进行补位,直到这串二进制数的位数为 24 的倍数。000000Base64 中对应的字符是 =,因此在看到一串混乱英文字母之后跟着 = 那极有可能是补过位的一串二进制数。