gpg:解密失败:没有密钥

Man*_*the 14 encryption ssis gnupg

没有密钥,我无法解密我的文件。我知道这个问题以前被问过,这个问题的解决方案对我没有帮助。

这是我的问题的场景。我在使用 --decrypt 命令时在命令提示符下收到此错误。

gpg:解密失败:没有密钥

我有公钥和密码。我使用以下命令来检查是否有密钥。

• gpg --list-secret-keys

• gpg --list-keys

以上两个命令都返回空白结果(没有错误)。所以我决定用 --import 导入公钥。

• gpg --import "C:\PATH\TO_MY_PUBLIC_KEY"

在 --import 命令之后,我可以看到 public 被导入。我找不到处理密钥的方法。有什么办法可以找到密钥或创建新的密钥。

Eli*_*kes 16

我还收到了来自相同 2 个命令的空白输出:

gpg --list-secret-keys
gpg --list-keys
Run Code Online (Sandbox Code Playgroud)

我有理由怀疑这与最近对~/.gnupg/pubring.kbx文件的更改有关,这导致我运行以下 2 个命令来重新导入丢失的键:

重新导入丢失的密钥:

gpg --import < ~/.gnupg/secring.gpg
Run Code Online (Sandbox Code Playgroud)

重新导入丢失的公钥:

gpg --import < ~/.gnupg/pubring.gpg
Run Code Online (Sandbox Code Playgroud)


cin*_*ada 10

如果您的 pinentry 程序无法正常工作,并且 gpg 无法获取解锁解密密钥的密码,也可能会出现此消息。这种情况在我身上发生过几次。如果是这种情况,gpg -d -v将出现选择正确的密钥,然后在放弃之前挂起一段时间。这是它在等待永远不会真正返回的松树。

这些步骤取决于您的具体环境,但检查(或创建)选项pinentry-program~/.gnupg/gpg-agent.conf一个不错的起点。gpg就我而言(在安装了 Homebrew 的 OS X 上pinentry-mac),我必须创建包含以下内容的文件:

pinentry-program /usr/local/bin/pinentry-mac
Run Code Online (Sandbox Code Playgroud)

然后运行gpgconf --kill gpg-agent以重新加载配置(gpg-agent应该自动重新启动)。

无论您喜欢的 pinentry 程序是什么,您可能都需要调整上面的路径。locate pinentry可能有助于查找您已安装的选项,或者which your-pinentry-program-here如果您已经知道名称,则会告诉您完整路径。

  • 这里是 macOS Big Sur 用户,也使用 Homebrew。我对以上的一切完全一无所知。我想我可能已经通过 Homebrew 升级了 gpg,并且完全忘记检查 `gpg-agent` 配置是否需要任何更改......无论如何,我根本不知道在哪里更改以及更改什么。谢谢你! (2认同)

Jen*_*rat 5

非常简短的版本:没有密钥就无法解密。

GnuPG 要求提供密钥(如果您在某处读过,通常将其用作私钥的同义词),因此该消息是使用公钥/私钥加密技术进行加密的。您无法使用公钥解密消息,这是公钥/私钥加密背后的基本原理。秘密密钥可以使用密码保护,这就是为什么您可能有密码(尽管您丢失了密钥)。

如果您需要解密邮件,请询问私钥,或者要求发件人使用对称加密技术进行加密并与您共享密码。


Ray*_*Oei 5

我有同样的错误,但有不同的解决方案,这是在 OSX 上,但我认为在其他系统上也会类似。

gpg-agent似乎是罪魁祸首,因为我意识到我从来没有收到过pinentry关于我的一把钥匙的问题。杀死它gpgconf --kill gpg-agent解决了这个问题。当第一次调用需要它时,gpg-agent 将自动启动。确实,松树出现了,一切又恢复正常了。