我更改了密钥的密码:
$ gpg --edit-key <PUBKEY_ID>
passwd
<old_passphrase>
<new_passphrase>
<new_passphrase>
save
使用 重新加载gpgconf --reload
,但尝试解密时仍使用旧密码。
$ gpg2 -d somefile.gpg
其中该文件使用我更改密码的公共子密钥进行加密。它提示我输入密码并且只接受<old_passphrase>
。
然而,当我再次跑步时$ gpg --edit-key <PUBKEY_ID>
,passwd
它做要求我使用<new_passphrase>
解锁钥匙。
这里出了什么问题?
运行 KDE Neon 5.8(基于 Ubuntu 16.04 Xenial)
$ gpgconf --list-components
gpg:GPG for OpenPGP:/usr/bin/gpg2
gpg-agent:GPG Agent:/usr/bin/gpg-agent
scdaemon:Smartcard Daemon:/usr/lib/gnupg2/scdaemon
gpgsm:GPG for S/MIME:/usr/bin/gpgsm
dirmngr:Key Acquirer:/usr/bin/dirmngr
pinentry:PIN and Passphrase Entry:/usr/bin/pinentry
答案1
请注意,您用来更改密码的命令(在您的问题中)是,gpg
而您用来解密的命令是gpg2
。
这两个命令属于两个独立的 GnuPG 安装。一个可能是 GnuPG 1.4.x(或至少早于 2.1),另一个可能是 GnuPG 2.1.x。这两个版本的 GnuPG 以不同的方式管理密钥。
要更改 的密码gpg2
,请使用gpg2 --edit-key
(而不是gpg --edit-key
)
从 ”GnuPG 2.1 中的新增内容”:
为了简化向无加密方法的迁移,
gpg
检测 a 的存在secring.gpg
并将密钥即时转换到 的密钥存储gpg-agent
(这是private-keys-v1.d
GnuPG 主目录 (~/.gnupg
) 下的目录)。这只执行一次,secring.gpg
然后现有的就不再被 触及gpg
。这允许较旧的 GnuPG 版本与 GnuPG 2.1 共存。但是,当使用 2.1 之前版本的 GnuPG 时,使用新版本对私钥所做的任何更改gpg
都不会显示,反之亦然。
(请注意,gpg
上面的文本指的是gpg2
GnuPG 2.1 的可执行文件)