gpg:解密失败:没有密钥

时间:2017-04-20 08:11:13

标签: encryption ssis gnupg

如果没有密钥,我无法解密我的文件。我知道this之前就问过这个问题,这个问题的解决方案对我没有帮助。

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

gpg:解密失败:没有密钥

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

•gpg --list-secret-keys

•gpg --list-keys

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

•gpg --import“C:\ PATH \ TO_MY_PUBLIC_KEY”

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

8 个答案:

答案 0 :(得分:3)

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

GnuPG要求提供密钥(如果您在某处读取密钥,通常将其用作私钥的同义词),因此使用公钥/私钥加密对邮件进行加密。您无法使用公钥解密消息,这是公钥/私钥加密背后的基本原则。密钥可以用密码保护,这就是你可能有密码的原因(虽然你错过了密钥)。

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

我还从相同的2条命令接收到空白输出:

gpg --list-secret-keys
gpg --list-keys

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

重新导入丢失的密钥:

gpg --import < ~/.gnupg/secring.gpg

重新导入丢失的公共密钥:

gpg --import < ~/.gnupg/pubring.gpg

答案 3 :(得分:0)

如果您导入并最终信任(最终)并且可以使用gpg --list-secret-keys查看密钥,但是当您解密时会告诉您找不到密钥,请添加--batch到您的解密命令。

答案 4 :(得分:0)

在我的情况下,系统上同时安装了gpg(1.x)和gpg2,而gpg 1.x不支持我的ed25519密钥。

通过查看版本Pubkey的grep,您将知道支持哪些算法

/usr/bin/gpg --version 
/usr/bin/gpg2 --version

如果是这样,请尝试gpg2 --list-secret-keys

如果可行,请在.bashrc中添加一个别名,并将符号链接添加到〜/ bin中(对于git)

echo "alias gpg='gpg2'" >> ~/.bashrc
ln -s /usr/bin/gpg2 $HOME/bin/gpg
. ~/.bashrc

然后,gpg --list-secret-keys的输出不再为空。

也许它不能解决OP的问题,但希望对您有所帮助。

答案 5 :(得分:0)

您可以使用TdApi.ResendRecoveryEmailAddressCode

忽略该错误。

答案 6 :(得分:0)

如果您的pinentry程序运行不正常,也会出现此消息,因此gpg无法获取密码来解锁解密密钥。这发生在我身上两次。在这种情况下,gpg -d -v会出现以选择正确的键,然后挂一会儿再放弃。这是等待永远不会真正回来的苦难。

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

pinentry-program /usr/local/bin/pinentry-mac

您可能需要根据自己喜欢的Pinentry程序进行必要的调整。

答案 7 :(得分:0)

就我而言,我的 gpg 密钥有密码,当我在宽度和高度有限的 vscode 终端中输入 in my code using args and kwargs out True 时,它会输出

git-crypt unlock

但是当我在完整的终端窗口上尝试相同的命令时,它的作用就像魅力一样,并提示获取密码等等。