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

时间:2013-03-04 22:12:04

标签: base64

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

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

2 个答案:

答案 0 :(得分:9)

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

BASE64("") = ""

我认为逆也必须保持不变。

答案 1 :(得分:6)

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

  

如果在结尾处找到超过允许的填充字符数   字符串,例如,以“===”结尾的基本64字符串,   多余的填充字符可以忽略。

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