加密然后 Base64 编码

信息安全 加密 密码学
2021-09-04 12:34:44

我注意到在线加密工具会加密明文并以 base64 格式输出密文。为什么密文输出为base64格式?密文能否以二进制格式输出?

2个回答

密文可以以二进制格式输出。例如 gpg 默认为二进制格式,需要指定--armor为 base64:

--armor
-a
    Create ASCII armored output. The default is to create the binary OpenPGP format. 

您经常看到 ASCII/base64 的原因是它比二进制更容易传输和操作。例如,SMTP 电子邮件在不编码的情况下无法处理二进制数据,因此使用非二进制格式可以更轻松地通过电子邮件发送加密文本。FTP 可能默认为非二进制模式,这会在传输二进制文件时引入错误。即使是像在编辑器中弹出一个文件以确保它“看起来就在那里”这样简单的事情,使用非二进制格式也更容易。

Web 浏览器必须打印二进制数据的可视化表示。二进制数据的通常视觉表示是十六进制表示法。

现在观察:十六进制编码数据的空间开销是因子 2(一个字节需要 2 个 ascii 字符)。base64 编码数据的空间开销仅为 1.33,使其比 hex 编码数据更节省空间。

此外,我怀疑该工具对 base64 编码数据的支持至少与十六进制编码数据一样好。

例如,您可以将 base64 编码的密文直接复制粘贴到 PEM 文件中。