gpg2 - 没有选择 aes 分组密码和过时的使用代理的选项?

gpg2 - 没有选择 aes 分组密码和过时的使用代理的选项?

使用 OpenSSL,我可以选择使用哪种类型的分组密码来加密文件。

例如,如果我想用 AES256 CBC 分组密码模式加密文件:

openssl aes-256-cbc -a -salt -pass pass:MYPASSWORD -in secrets.txt -out secrets.txt.enc

在 gpg2 中,我尝试使用以下命令加密文件:

gpg2 --cipher-algo AES256 -a --no-use-agent --passphrase MYPASSWORD -c secrets.txt

有两个问题我可以得到帮助:

  • 没有选项可以指定要使用的密码块。如果我想要 AES256 CTR 或 XTS 而不是 CBC 怎么办?--cipher-algo AES256使用什么密码块以及如何指定具体内容?

  • 如果我不在 gnu 密码代理中输入密码,该命令将完全失败(我尝试在命令中使用和提供密码--passphrase--no-use-agent以便在受信任的机器上实现自动化):

    gpg:警告:“--no-use-agent”是一个过时的选项 - 它没有任何效果

    gpg:代理存在问题:无效卡

    gpg:创建密码错误:操作已取消

    gpg:“secrets.txt”对称加密失败:操作已取消

答案1

密码模式

OpenPGP 强制执行一种给定模式,即修改后的 CBC 模式(如 RFC 4880 中定义)。您无法将其更改为其他内容。

GPG 代理

正如 @grawity 在评论中指出的那样,GnuPG 2 的较新版本将一些加密功能提取到代理中,因此密码和私钥不会使这个较小的程序出现漏洞的概率较低。

我猜用gpg-preset-passphraseGnuPG 2.1 文档)以编程方式设置密码是 GnuPG 2 中批量操作的方法。另一种方法可能是使用`--密码[-fd,文件]这些选项似乎在 GnuPG 2.1 中仍然可用。

答案2

要获取支持的密码列表,您可以使用gpg2 --version。在我的计算机上,我得到以下输出:

密码:IDEA、3DES、CAST5、BLOWFISH、AES、AES192、AES256、TWOFISH、CAMELLIA128、CAMELLIA192、CAMELLIA256

不过,我看不出有任何办法可以更改为 CTR 或 XTS。

我也没有看到在命令行中指定密码的选项,但也许您可以尝试使用密钥而不是密码进行加密。

相关内容