虽然base64 [--decode]
在本地编码和解码文件时效果很好,但我无法解码从 Thunderbird 或 Gmail 保存的 eml 文件中的 Base64 编码内联附件。
我观察到所有 eml 文件中的 Base64 编码块与生成的类似base64
,但行的长度不同:eml 文件中的 Base64 编码文本块中的行由72 个字符组成,而本地生成的 Base64 编码文件由76 个字符长的行。我怀疑这种差异是我无法成功使用base64 --decode
eml 文件片段的原因。
我的假设是真的吗?如何解码这些附件?
该命令通过以 76 个字符的默认列宽换行文本来
base64
执行编码,除非使用选项指定了另一个值--wrap=COLS
。无论列宽如何,该命令
base64 --decode
都可以正常工作,例如,文本块可能由单行(无论多长)组成,也可以由以任何固定列宽换行的多行组成。从 Thunderbird 或 GMail 等网络邮件保存的“Internet 消息格式”(*.eml) 文件的问题实际上是它们使用 DOS/Windows (“CRLF”/“\r\n”) - 而不是 Unix/Linux ( "LF" / "\n") - 行结束符,而 和 都
base64
使用base64 --decode
后者。这意味着,在执行命令之前,应首先使用该命令转换“Internet 消息格式”(*.eml) 文件(或从中检索的 Base64 编码文本块
dos2unix
)。base64 --decode