解码Base64字符串时如何处理错误

时间:2017-08-11 04:13:21

标签: c base64 standards

我正在尝试编写一个小的Base64编码器/解码器程序,并且当试图遇到无效的字符时,我试图弄清楚是否有任何规则,或任何指南或预期的行为。 / p>

我可以快速失败(抱怨和退出),忽略无效字符(就像我会为换行做的那样等),或者做一个垃圾进入,垃​​圾出局的方法(数据将被部分解码,其余的取决于严重程度或确切的错误数量。)

在类似的观点上:我想我应该忽略换行符(比如在PEM文件中,行以64个字符的长度被破坏),但是还有其他任何我可以预期的控制字符,应该忽略吗?< / p>

如果它有任何意义,我用纯(香草)C编码,它还没有它的库。但是这个细节对我正在寻找的答案来说并不重要。

感谢。

1 个答案:

答案 0 :(得分:0)

道歉。 MIME上的RFC(134115212045)包含以下段落,直到现在我都找不到:

  

输出流(编码字节)必须以不超过76个字符的行表示。 解码软件必须忽略表1中未找到的所有换行符或其他字符。在base64数据中,除表1中的字符,换行符和其他空格之外的字符可能表示传输错误,在某些情况下,警告信息或消息拒绝可能是适当的。

在任何情况下,在StackOverflow上提供此问题和答案都是合适的。

P.S。如果Base64的其他标准与其他指南有关,则链接和引号适用于其他答案。