PBEWithMD5AndDES和Base64编码提供的加密字符串是否包含CR和/或LF字符?
答案 0 :(得分:3)
Base64只是可打印的字符。但是,如果将其用作电子邮件的MIME类型,则会将其拆分为由CR-LF分隔的行。
答案 1 :(得分:1)
PBEWithMD5AndDES返回二进制数据。 PBE加密在PKCS#5 standard内定义,并且该标准没有专用的基本64编码方案。因此,问题变成了Base 64对二进制数据进行编码所需的系统。维基百科有一个nice section within the Base 64 article来解释各种形式。
您可能会遇到返回Base 64的PBE实现,并且该实现未提及使用上述哪种方案。在这种情况下,您需要以某种方式确定使用哪种方案。我建议搜索它,询问社区,查看源代码或者是否都失败,在输出上创建一组测试。
幸运的是,如果您正在解码base 64并且忽略所有空格,那么您将非常安全。请注意,某些实现忽略了填充,因此在解码之前添加它(如果适用)。
如果您自己执行编码库64,我强烈建议不要输出任何空格,只使用默认字母(带'+'
和'/'
符号),并在需要时始终执行填充。之后,您可以随时拆分结果并替换任何非标准字符(当然尤其是'+'
和'/'
符号),或删除填充。
答案 2 :(得分:0)
我正在使用带有Andorid SDK的java。我找到了命令:
String s = Base64.encodeToString(enc, Base64.DEFAULT);
做了换行。它将LF字符放入输出字符串。
我发现:
String s = Base64.encodeToString(enc, Base64.NO_WRAP);
没有将LF字符放入输出字符串。