编码方式

Base64

​ 把任意二进制数据安全地表示成只含可打印 ASCII 字符的文本,便于在只支持文本的协议里传输,比如邮件 SMTP、HTTP、JSON 嵌入二进制、证书/密钥文本化等。它不是加密,也不是压缩;任何人都可以轻易还原

核心原理:3 字节变 4 字符

​ 3 个字节 = 24 bit。把这 24 bit 切成 4 组,每组 6 bit。每个 6 bit 的值范围是 0~63,再映射到 64 个字符表中: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/

  • 0~25 -> A~Z
  • 26~51 -> a~z
  • 52~61 -> 0~9
  • 62 -> +
  • 63 -> /

编码过程

Base64 直接处理输入字节,不要求输入原本是 ASCII 文本。每 3 个字节分为 4 组 6 bit,再映射到字符表。

  1. 将每3个字节作为一组,3个字节一共24个二进制位
  2. 将这24个二进制位分为4组,每个组有6个二进制位
  3. 在每组的6个二进制位前面补两个00,扩展成32个二进制位,即四个字节
  4. 每个字节对应的将是一个小于64的数字,即为字符编号,再根据字符索引关系表,每个字符编号对应一个字符,就得到了Base64编码字符

不足 3 字节时,最后一组右侧补零后编码:剩 1 字节得到 2 个字符并补 ==,剩 2 字节得到 3 个字符并补 =。这是标准带填充的 Base64;某些协议会另行规定省略填充。

base64编码_数据_02

UTF-8

协议

SMTP协议

​ 用于电子邮件传输的协议

HTTP协议

参考:RFC 4648。