我正在尝试使用GPG(目前为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 is not available in this session
我担心转移到gpg2因为,according to the documentation,gpg-agent总是需要的,而且–no-use-agent只是一个虚拟选项.我的gpg调用通过守护进程在后台发生,所以这是一个非代理方案(加上它是对称的,我根本不需要代理).
这个详细程度的文档很少,所以我正在寻找用户体验. gpg2是否更紧密地合并了代理,因此我不必担心它的可用性?
解决方法
>调用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会报告一个警告,甚至不会要求新的密码,并继续工作.
资料来源: