Appendix C. Notes on Implementing base64url Encoding without Padding (关于实现无填充 base64url 编码的说明)
本附录描述了如何在不使用填充的情况下实现 base64url 编码, 如本规范所要求的那样.
base64url 编码是 RFC 4648 [RFC4648] 第 5 节中定义的 base64 编码的变体, 使用 URL 和文件名安全字符集. 唯一的区别是:
- 使用 '-' 代替 '+'
- 使用 '_' 代替 '/'
- 省略填充 '=' 字符
要在不使用填充的情况下实现 base64url 编码:
- 使用标准 base64 编码器对输入八位字节序列进行编码
- 将结果中的所有 '+' 字符替换为 '-'
- 将结果中的所有 '/' 字符替换为 '_'
- 删除所有尾随的 '=' 字符
要解码 base64url 编码的字符串:
- 根据需要添加 '=' 字符, 使字符串长度是 4 的倍数
- 将所有 '-' 字符替换为 '+'
- 将所有 '_' 字符替换为 '/'
- 使用标准 base64 解码器解码结果
填充计算:
如果输入长度 mod 4 == 0, 则不需要填充. 如果输入长度 mod 4 == 2, 则添加两个 '=' 字符. 如果输入长度 mod 4 == 3, 则添加一个 '=' 字符. 如果输入长度 mod 4 == 1, 则输入格式错误.