我正在尝试使用GPG(目前为v 1.4.10)来执行对称加密/解密过程的一些自定义软件。我当前的加密命令如下所示:
gpg --batch --no-tty --no-use-agent --symmetric --cipher-algo AES256 --passphrase "foobar" /path/to/file_to_be_encrypted
如果没有--no-use-agent
选项,我会收到臭名昭着的错误消息
gpg-agent在此会话中不可用
我担心转移到gpg2,因为according to the documentation,gpg-agent始终是必需的,--no-use-agent
只是一个虚拟选项。我的gpg调用是通过守护进程在后台进行的,所以这是一个非代理方案(加上它是对称的,我根本不需要代理)。
此详细级别的文档很少,所以我正在寻找用户体验。 gpg2是否更紧密地合并了代理,因此我不必担心它的可用性?
答案 0 :(得分:6)
调用gpg2
的方式,如果输出文件path/to/file_to_be_encrypted.gpg
已存在,则可能会失败。如果您希望覆盖该文件,则应提供--yes
选项:
gpg2 --batch --yes --no-tty --no-use-agent --symmetric --cipher-algo AES256 --passphrase "foobar" /path/to/file_to_be_encrypted
当您使用对称加密时(与您一样),密码约束(即使gpg-agent
设置为强制)也不会完全适用 - 它会起作用。
假设gpg-agent
像这样运行(让mypasswords
文件甚至包含与您的密码完全匹配的禁止模式):
eval $(gpg-agent --daemon --enforce-passphrase-constraints --min-passphrase-len 8 --min-passphrase-nonalpha 4 --check-passphrase-pattern mypasswords)
然后你的命令仍然会成功。
简而言之:gpg-agent
不会让它失败(除非因某些原因崩溃gpg - 如错误配置或丢失可执行文件,你无法解释)。
编辑:我刚检查并且在对称模式下gpg2将工作,即使gpg-agent配置错误或如果gpg -agent可执行文件丢失了。
这与此无关,但以防万一:我还验证了当您尝试更改私钥密码而gpg-agent缺失或配置错误时会发生什么:gpg2将报告警告,甚至不会要求新密码,并继续工作。
来源: