如果没有密钥,我无法解密我的文件。我知道this之前就问过这个问题,这个问题的解决方案对我没有帮助。
这是我的问题。 我在使用--decrypt命令时在命令提示符下收到此错误。
gpg:解密失败:没有密钥
我有公钥和密码。 我使用以下命令检查是否有密钥。
•gpg --list-secret-keys
•gpg --list-keys
以上两个命令都返回空白结果(无错误)。所以我决定用--import导入公钥。
•gpg --import“C:\ PATH \ TO_MY_PUBLIC_KEY”
在--import命令后我可以看到公共导入。我找不到处理密钥的方法。有什么方法可以找到密钥或创建新密钥。
答案 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且安装了gpg
和pinentry-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
但是当我在完整的终端窗口上尝试相同的命令时,它的作用就像魅力一样,并提示获取密码等等。