我发送了一封电子邮件,其中包含近 2500 个字符的文本和一个附加的 60KiB PNG 文件。该文本包含 185 号数字八次。然而,在电子邮件被编码为base64并发送后,我只能从电子邮件源中找到三个“MTg1”(“MTg1”在base64编码中为“185”)字符串。这怎么解释呢?根据电子邮件标头,内容类型为“text/plain;charset=UTF-8”,内容传输编码为“base64”。
答案1
Base64 编码将 6 个字节变成 8 个字节。对于任何给定的明文,有 3 种可能的编码,每次移动几个位(并与其他编码文本混合,因此不容易找到)。
>>> '185'.encode('base64')
'MTg1\n'
>>> '\x00185'.encode('base64')
'ADE4NQ==\n'
>>> '\x00\x00185'.encode('base64')
'AAAxODU=\n'
>>> '\x00\x00\x00185'.encode('base64')
'AAAAMTg1\n'