Skip to main content

Appendix C. Notes on Implementing base64url Encoding without Padding (关于实现无填充 base64url 编码的说明)

本附录描述了如何在不使用填充的情况下实现 base64url 编码, 如本规范所要求的那样.

base64url 编码是 RFC 4648 [RFC4648] 第 5 节中定义的 base64 编码的变体, 使用 URL 和文件名安全字符集. 唯一的区别是:

  • 使用 '-' 代替 '+'
  • 使用 '_' 代替 '/'
  • 省略填充 '=' 字符

要在不使用填充的情况下实现 base64url 编码:

  1. 使用标准 base64 编码器对输入八位字节序列进行编码
  2. 将结果中的所有 '+' 字符替换为 '-'
  3. 将结果中的所有 '/' 字符替换为 '_'
  4. 删除所有尾随的 '=' 字符

要解码 base64url 编码的字符串:

  1. 根据需要添加 '=' 字符, 使字符串长度是 4 的倍数
  2. 将所有 '-' 字符替换为 '+'
  3. 将所有 '_' 字符替换为 '/'
  4. 使用标准 base64 解码器解码结果

填充计算:

如果输入长度 mod 4 == 0, 则不需要填充. 如果输入长度 mod 4 == 2, 则添加两个 '=' 字符. 如果输入长度 mod 4 == 3, 则添加一个 '=' 字符. 如果输入长度 mod 4 == 1, 则输入格式错误.