代码之家  ›  专栏  ›  技术社区  ›  Fozi

空字符串是否为有效的base64编码数据,长度为零字节?

  •  26
  • Fozi  · 技术社区  · 12 年前

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

    因此,问题是: 你有没有链接到一些官方文档,这些文档明确说明了零字节应该如何在base64中编码?

    2 回复  |  直到 3 年前
        1
  •  28
  •   Community CDub    3 年前

    根据 RFC 4648 Section 10 ,测试矢量,

    BASE64("") = ""
    

    我认为反过来也必须成立。

        2
  •  9
  •   Aquatoad    12 年前

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

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

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