使用 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-passphrase
(GnuPG 2.1 文档)以编程方式设置密码是 GnuPG 2 中批量操作的方法。另一种方法可能是使用`--密码[-fd,文件]这些选项似乎在 GnuPG 2.1 中仍然可用。
答案2
要获取支持的密码列表,您可以使用gpg2 --version
。在我的计算机上,我得到以下输出:
密码:IDEA、3DES、CAST5、BLOWFISH、AES、AES192、AES256、TWOFISH、CAMELLIA128、CAMELLIA192、CAMELLIA256
不过,我看不出有任何办法可以更改为 CTR 或 XTS。
我也没有看到在命令行中指定密码的选项,但也许您可以尝试使用密钥而不是密码进行加密。