ger*_*ijk 45 encryption data-integrity gnupg aes
我使用对称加密对文件进行了加密,如下所示:
gpg --symmetric myfile
Run Code Online (Sandbox Code Playgroud)
结果是一个文件myfile.gpg
。
好吧。现在让我们再次解密文件:
gpg -o myfile --decrypt myfile.gpg
Run Code Online (Sandbox Code Playgroud)
我被要求输入我设置的密码,然后我看到
gpg: CAST5 encrypted data
gpg: encrypted with 1 passphrase
gpg: WARNING: message was not integrity protected
Run Code Online (Sandbox Code Playgroud)
我不确定那里的第一行和最后一行。
ger*_*ijk 70
CAST-5是 GnuPG 使用的较旧的加密算法,因为在 GnuPG 最初创建source时,AES 还不存在。它没有被广泛使用(除了 GnuPG 出于兼容性原因)。
这WARNING: message was not integrity protected
是因为在加密时默认情况下未启用此功能。如果启用此功能,GnuPG 可以判断文件在传输过程中是否已被更改。
更新:Ubuntu/Debian 附带的现代 GnuPG 版本现在默认启用MDC ,对于使用这些较新版本签名的任何内容,您将永远不会再看到此消息。
要使用更强大的 AES-256,您必须在命令行或配置文件中指定它。
命令行:添加--cipher-algo AES256
选项,以便加密的完整行变为
gpg -o myfile.gpg --cipher-algo AES256 --symmetric myfile
Run Code Online (Sandbox Code Playgroud)配置文件(推荐):将以下行添加到您的~/.gnupg/gpg.conf
配置文件中。
cipher-algo AES256
Run Code Online (Sandbox Code Playgroud)
我推荐这种方法,因为它将用于此用户帐户上的所有未来 GPG 操作。
用户解密文件没有任何改变 - GnuPG 会自动检测到这一点。
请注意,使用 AES-256 密码,消息会自动受到完整性保护。要在其他未启用的密码(如 CAST-5)上手动启用完整性保护,请在加密--force-mdc
时添加该选项。
更好的方法是使用您的密钥对(如果有的话)对您的文件进行签名。只需将--sign
选项添加到加密命令中,如下所示:
gpg -o myfile.gpg --cipher-algo AES256 --sign --symmetric myfile
Run Code Online (Sandbox Code Playgroud)
这不仅可以验证文件的完整性,还可以让文件的接收者验证来源。对文件的任何更改都会导致签名检查失败。