24

我的一所大学告诉我空字符串不是有效的 base64 编码数据字符串。我不认为这是真的(他懒得解析它),但是在谷歌搜索了一下甚至检查了RFC之后,我没有找到任何明确说明如何在 base64 中正确编码零字节长度的 blob 的文档.

所以,问题是:您是否有指向一些官方文档的链接,其中明确说明了零字节应该如何在 base64 中编码?

4

2 回答 2

25

根据RFC 4648 第 10 节,测试向量,

BASE64("") = ""

我会假设逆也必须成立。

于 2017-01-30T18:49:48.577 回答
9

我对此的想法是空字符串可能产生两个可能的 base64 值;可以是空字符串,也可以是完全由填充字符 ('===') 组成的字符串。任何其他有效的 base64 字符串都包含信息。对于第二种情况,我们可以应用 RFC 中的以下规则:

如果在字符串末尾发现超过允许数量的填充字符,例如以“===”结尾的 base 64 字符串,则可以忽略多余的填充字符。

由于它们可以被忽略,它们可以从生成的编码字符串中删除而不会产生任何后果,再次给我们留下一个空字符串作为空字符串的 base64 表示。

于 2013-03-06T19:53:10.137 回答