ruby - 如何在使用 gpgme 解密文件时绕过 pinentry(密码屏幕)

标签 ruby gnupg gpgme

我正在尝试从服务器解密文件,我拥有该服务器所需的公钥。 key 环具有密码保护,因此当我尝试解密文件时,它会要求我输入密码。

当我们尝试解密文件时,有没有办法通过传递密码来绕过该密码。

我正在使用 gpg-agent,其中密码默认缓存 600 秒,由于某种原因,我无法设置 max-cache-ttl (它没有对我不起作用,我不知道 y) 并且仅适用于该 session 。

现在我想缓存我正在使用gpg-preset-passphrase的密码。我在 .gnupg/gpg-agent.conf 中将其设置为 gpg-preset-passphrase --preset hex。我不知道我错过了什么。

有人可以让我知道我在其中缺少什么吗?

最佳答案

我无法绕过密码或 pinentry 屏幕,但我使用 gpg-agent 选项(如 default-cache-ttl)来设置缓存时间。因此,从第二次尝试开始,pinentry 将检索缓存的密码短语并重置 defaul-cache-ttl 上的计时器。

还有一个称为 max-cache-ttl 的选项,即使在成功检索缓存密码并重置 default-cache-ttl 后,该选项也不会更改其计时器并使计时器过期设置超时后缓存的密码。

例如:如果我将它们都设置为 10 小时(即 36000 秒),如果我在 5 小时后调用解密,则默认将重置其计时器,现在我们还有 10 个小时。但最大值将在最初 10 小时后过期,因此会在 10 小时后删除缓存的密码。

我发现的另一个问题是 gpg-agent 的 session 问题。即,如果我打开一个新 session 并尝试解密,则不会发生这种情况,并且会错误提示 gpg-agent 对于该 session 不可用。我编写了一些 shell 脚本并将其放在 bashrc 上,以便在新 session 启动时立即启动

关于ruby - 如何在使用 gpgme 解密文件时绕过 pinentry(密码屏幕),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8671099/

相关文章:

security - 软暴力破解您自己的 GPG/PGP 密码的最佳方法是什么?

c - 如何使用 gpgme 解密子消息?

Ruby 日期算术错误 - "can' t 将日期转换为精确数字(TypeError)”

ruby - 使用 Ruby 为 Gmail IMAP 访问生成 SASL XOAUTH2 客户端响应

c++ - 强制 GPGME 中的 GPG 使用 CAST5 以外的密码

使用 gpg 命令拒绝 Php shell_exec() 权限

ruby - Ruby 中的 URI.escape 和 URI.encode 有什么区别?

ruby - 为什么我不能在方法中修改数组的值?

key - 如何显示我刚刚用 gpg 生成的 key 对的实际公钥/私钥?

c - 如何抑制来自 gpgme 的 valgrind 警告?