Skip to main content

RFC 4648 - Base16、Base32和Base64数据编码

发布日期: 2006年10月
状态: 标准跟踪协议 (Standards Track)
作者: S. Josefsson (SJD)
废弃: RFC 3548


摘要 (Abstract)

本文档描述了常用的Base64、Base32和Base16编码方案。它还讨论了编码数据中换行符的使用、编码数据中填充的使用、编码数据中非字母字符的使用、不同编码字母表的使用以及规范编码。


本备忘录的状态 (Status of This Memo)

本文档为互联网社区规定了一个互联网标准跟踪协议,并请求讨论和改进建议。有关本协议的标准化状态和地位,请参阅当前版本的"互联网官方协议标准" (STD 1)。本备忘录的分发不受限制。


Copyright (C) The Internet Society (2006).


目录 (Contents)

主要章节


为什么Base编码很重要?

Base编码是互联网数据传输的基础。它将二进制数据转换为文本格式,使其能够在只支持文本的环境中传输和存储。

核心应用场景

编码方式主要用途典型应用
Base64通用二进制编码MIME邮件附件、JWT令牌、数据URI
Base64URLURL安全编码JWT、OAuth令牌、URL参数
Base32人类可读编码TOTP密钥、Crockford编码
Base16十六进制编码哈希值显示、调试输出

Base64快速参考

标准Base64编码

字符集: A-Z, a-z, 0-9, +, /
填充字符: =
输出长度: 输入字节数 × 4/3 (向上取整到4的倍数)

示例:
输入: "Hello"
输出: "SGVsbG8="

编码过程:
H e l l o
01001000 01100101 01101100 01101100 01101111
↓ 按6位分组
010010 000110 010101 101100 011011 000110 1111
↓ 查表
S G V s b G 8=

Base64URL编码 (RFC 4648 §5)

字符集: A-Z, a-z, 0-9, -, _
填充字符: = (通常省略)

与标准Base64的区别:
+ → -
/ → _

用途: JWT、OAuth令牌、URL参数

Base编码对照表

Base64标准字符表

值  字符  值  字符  值  字符  值  字符
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

填充字符: =

Base32标准字符表

值  字符  值  字符
0 A 16 Q
1 B 17 R
2 C 18 S
3 D 19 T
4 E 20 U
5 F 21 V
6 G 22 W
7 H 23 X
8 I 24 Y
9 J 25 Z
10 K 26 2
11 L 27 3
12 M 28 4
13 N 29 5
14 O 30 6
15 P 31 7

填充字符: =

实际应用示例

JWT (JSON Web Token)

JWT结构:
header.payload.signature

每部分都是Base64URL编码:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIn0.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

数据URI

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA..." />

MIME邮件附件

Content-Type: application/pdf
Content-Transfer-Encoding: base64

JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlIC9DYXRhbG9n...

相关RFC

  • RFC 2045 - MIME Part One (定义Base64用于MIME)
  • RFC 3548 - Base编码 (被RFC 4648废弃)
  • RFC 7515 - JSON Web Signature (使用Base64URL)
  • RFC 7519 - JSON Web Token (使用Base64URL)