0

解码结果

Base64

编码结果

Base64
换行

关于 Base64

Base64 是使用 7 位可打印 ASCII 字符的编码方式。主要用于电子邮件中通过 7 位数据路径传输 8 位数据。

在 Base64 中,数据被每 6 个比特分为一组,并转换为英数字 (A-Z, a-z, 0-9) 和符号 (+, /) 来表示。每 4 个字符转换一次,如果最后不足 4 个字符,则用等号 (=) 填充。

此外,RFC 1421 (PEM: Privacy-Enhanced Mail) 规定每 64 个字符换行,RFC 2045 (MIME) 规定每 76 个字符换行。

Base64 字符转换表如下。

6比特数据Base64 字符
000000A
000001B
000010C
000011D
000100E
000101F
000110G
000111H
001000I
001001J
001010K
001011L
001100M
001101N
001110O
001111P
010000Q
010001R
010010S
010011T
010100U
010101V
010110W
010111X
011000Y
011001Z
011010a
011011b
011100c
011101d
011110e
011111f
100000g
100001h
100010i
100011j
100100k
100101l
100110m
100111n
101000o
101001p
101010q
101011r
101100s
101101t
101110u
101111v
110000w
110001x
110010y
110011z
1101000
1101011
1101102
1101113
1110004
1110015
1110106
1110117
1111008
1111019
111110+
111111/

例如,将“Hello”用 Base64 转换如下。

1. 转换为二进制表示。

01001000 01100101 01101100 01101100 01101111  (US-ASCII / UTF-8)

2. 每 6 个比特分隔。不足 6 比特的在末尾用“0”填充。

010010 000110 010101 101100 011011 000110 111100

3. 使用转换表转换为字符。每 4 个字符转换一次,不足 4 个字符的在末尾用“=”填充。

SGVs bG8=

4. 连接所有字符作为 Base64 转换结果。

SGVsbG8=

电子邮件的 MIME 消息头格式 (RFC 2047)

DenCode 也支持如下的 MIME 消息头格式 (RFC 2047) 解码。这种格式用于电子邮件的主题或收视人等包含非 ASCII 字符的情况。

Subject: =?UTF-8?B?44K144Oz44OX44Or?=

解码后的结果如下。

Subject: サンプル

JSON Web Token (RFC 7519)

JSON Web Token (JWT) 是一种使用 Base64url 编码将 JSON 数据紧凑表示的令牌格式。它在 Web 应用程序的认证和授权中被广泛使用,并在 RFC 7519 中标准化。

JWT 由三个通过点 (.) 分隔的元素组成。

<Header>.<Payload>.<Signature>

各元素的作用如下。

元素说明
Header包含令牌类型 (typ) 和签名算法 (alg) 等元数据的 JSON 对象
Payload包含用户 ID 和过期时间等信息的 JSON 对象
Signature用于检测头部和载荷是否被篡改的签名数据

头部和载荷分别进行 Base64url 编码。与标准 Base64 相比,Base64url 将"+"替换为"-",将"/"替换为"_",并省略填充"="(RFC 4648)。这使得它们可以安全地包含在 URL 和 HTTP 头部中。

例如,解码以下 JWT 可以分别获取头部和载荷的 JSON 数据。

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
{
  "alg": "HS256",
  "typ": "JWT"
}
{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}

头部和载荷中包含的主要字段(声明)如下。

字段名称说明
algAlgorithm用于签名或加密的算法(如 HS256、RS256、ES256)
typType令牌类型(通常为 "JWT")
ctyContent Type载荷的内容类型(嵌套 JWT 时为 "JWT")
kidKey ID用于签名验证的密钥标识符
jkuJWK Set URL用于签名验证的 JWK Set 参考 URL
x5uX.509 URL用于签名验证的 X.509 证书链参考 URL
x5tX.509 Certificate SHA-1 Thumbprint用于签名验证的 X.509 证书的 SHA-1 指纹
字段名称说明
issIssuer令牌的签发者
subSubject令牌的主体(如用户 ID)
audAudience令牌的接收方
expExpiration Time令牌的过期时间(Unix 时间戳)
nbfNot Before令牌生效时间(Unix 时间戳)
iatIssued At令牌的签发时间(Unix 时间戳)
jtiJWT ID令牌的唯一标识符