Appendix C. Notes on Implementing base64url Encoding without Padding
Appendix C. 实现无填充 base64url 编码的说明 (Notes on Implementing base64url Encoding without Padding)
本附录提供了实现无填充 base64url 编码的指导, 供 JWS 使用.
要点 (Key Points)
-
Base64url 编码 (Base64url Encoding): 使用 RFC 4648 Section 5 中对 URL 和文件名安全的字符集, 具体来说, 使用 '-' 和 '_' 代替 '+' 和 '/'.
-
移除填充 (Padding Removal): 按 RFC 4648 Section 3.2 的许可, 省略所有尾随的 '=' 填充字符.
-
无换行 (No Line Breaks): 编码不得包含任何换行, 空白或其他附加字符.
-
空八位字节序列 (Empty Octet Sequence): 空八位字节序列的 base64url 编码是空字符串.
实现说明 (Implementation Notes)
实现 base64url 编码时:
- 从标准 base64 编码开始
- 将 '+' 替换为 '-'
- 将 '/' 替换为 '_'
- 移除所有尾随的 '=' 字符
- 确保不插入空白或换行
解码 base64url 字符串时:
- 将 '-' 替换为 '+'
- 将 '_' 替换为 '/'
- 根据输入长度添加适当的填充 ('='): 填充长度 = (4 - (输入长度 mod 4)) mod 4
- 执行标准 base64 解码
这种编码对 JWS 至关重要, 因为它使紧凑序列化可以安全地用于 URL 和 HTTP Header, 而无需百分号编码.