我使用 Emacs 用对称密钥加密了一个文本文件。解密文件时,程序 pinentry 打开一个窗口供输入密码。我不小心点击了“保存在密码管理器中”复选框,然后按了回车键(无密码)。显然,空密码已存储,现在打开文件时不再提示我输入密码。相反,我收到以下错误消息:
gpg: AES encrypted data
gpg: gcry_kdf_derive failed: Invalid data
gpg: encrypted with 1 passphrase
gpg: decryption failed: No secret key
当我在 Emacs 中打开文件时以及使用时也会收到此消息gpg2 -d the_file.gpg
。
如何删除空密码并恢复密码提示?
我已经尝试过的事情(没有成功):
- 重启,
- 杀死 gpg-agent,
- 杀死 gnome-keyring-daemon,
- 使用海马删除密钥(没有用,因为海马没有列出密钥)
我正在使用 Xubuntu 16.04。
答案1
Ubuntu 16.04 及其衍生版本目前附带 GPG 2.1.11,没有代理则无法使用。此外,自 2.1 以来,代理套接字文件已固定为${GPG_HOMEDIR}/S.gpg-agent
。我之所以这么说,是因为我不知道如何通过拥有该文件来gpg-agent
争夺gnome-keyring
代理,但任何时候都只能有一个人拥有它。
事实上,有一个用于保存密码的复选框表明你没有使用pinentry
via gpg-agent
,但是海马通过gnome-keyring
。我建议阅读“管理密码”部分,并尝试通过这种方式找到错误的关联(该特定文件的空密码)。
既然你提到在 Seahorse 中寻找密钥——如果你使用对称加密,密码将不是与任何 GPG 加密密钥相关联。(我发现 GPG 在这方面有所欠缺,详情这里。