返回博客
base64 2025-02-10

Base64 编码解析:工作原理和使用场景

全面解释 Base64 编码、其背后的算法以及在 Web 开发中的实际用例。

Base64 编码是计算中最基本的编码方案之一。无论是在电子邮件中嵌入图像、在 JSON 中存储二进制数据,还是处理身份验证令牌,Base64 无处不在。

Base64 到底是什么?

Base64 是一种将二进制数据转换为 64 个可打印 ASCII 字符字符串的二进制到文本编码方案。

Base64 字母表

标准 Base64 字母表由以下组成:

  • A-Z(索引 0-25)
  • a-z(索引 26-51)
  • 0-9(索引 52-61)
  • +(索引 62)
  • /(索引 63)
  • =(填充字符)

逐步编码过程

让我们逐步编码字符串 "Hi!":

1. 转换为二进制:H=01001000, i=01101001, !=00100001

2. 连接:010010000110100100100001

3. 分成 6 位组:010010 000110 100100 100001

4. 转换为十进制:18, 6, 36, 33

5. 映射到 Base64 字母表:S, G, k, h

6. 结果SGkh

填充说明

当输入长度不能被 3 整除时,添加 = 填充。

URL 安全的 Base64

标准 Base64 使用在 URL 中有特殊含义的 +/。URL 安全的 Base64(Base64url)将:

  • + 替换为 -
  • / 替换为 _
  • 填充 = 通常被省略

此变体在 RFC 4648 中指定,用于 JWT 令牌和其他 URL 敏感的上下文。

常见用例

HTML/CSS 中的数据 URI

嵌入图像

电子邮件附件(MIME)

SMTP 等电子邮件协议仅支持 7 位 ASCII。Base64 允许安全传输二进制文件。

HTTP 基本认证

Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

大小开销

Base64 编码将数据大小增加约 33%。每 3 字节输入产生 4 字节输出。

重要提醒

  • Base64 是编码,不是加密。它不提供安全性。
  • 始终考虑 33% 的大小增加
  • 当 Base64 字符串出现在 URL 中时,使用 URL 安全变体

尝试我们的 Base64 编码器/解码器工具进行即时编码和解码。