3. 实现差异
基数编码实现主要在五个方面存在差异:换行符、填充、字母表外字符、字母表选择,以及规范编码。
3.1 编码数据中的换行符
编码器不得向基数编码数据添加换行符,除非引用本规范的规范明确要求如此。MIME 与 PEM 的行长度限制是这些格式自身的规则,并非通用的 Base64 要求。
3.2 编码数据的填充
编码器通常必须在编码数据末尾包含适当的填充字符,除非引用本规范的规范明确另有说明。
3.3 字母表外字符
解码器必须拒绝包含所选字母表之外字符的编码数据,除非引用本规范的规范有意允许此类字符(例如通过忽略空白字符)。
3.4 选择字母表
不同的环境需要不同的字母表。像 + 和 / 这样的字符在 URL 与文件名中使用不便,这正是 RFC 4648 定义 URL 与文件名安全的 Base64 字母表的原因。
3.5 规范编码
填充位必须为零。否则,同一二进制数据可能拥有多个文本表示,这将破坏规范比较,并可能影响签名或哈希。