我的智能卡(物理上)坏了。我对密钥进行了离线备份,并成功将其导入 GnuPG。但是,每当我尝试使用密钥解密时,它都会不断要求输入密钥。我甚至在一台新机器上尝试过,但我还是没能成功让 GnuPG 使用本地密钥而不是坏卡上的密钥……
答案1
您必须删除旧的卡钥匙并重新导入。
首先,确保备份确实包含您正在寻找的密钥:
gpg --list-packets [backup-file]
您应该会发现几:secret [sub] key packet
行。它们后面不应该有gnu-divert-to-card S2K...
或行(可能会出现一些中间行) gnu-dummy S2K....
,这些行表示卡或其他离线密钥的 GnuPG 特定密钥存根。
恢复整个密钥
如果您的备份中拥有所有密钥,那就没有问题,您只需运行gpg --delete-secret-key [key-id]
备份即可gpg --import
。
与(新)子密钥合并
如果您在此日期之后更改了密钥(例如,添加了新的子密钥),则必须合并密钥。对于 GnuPG 2.1 或更新版本,这不是问题,它们最终实现了密钥合并。对于旧版本的 GnuPG,您必须手动拆开各个 OpenPGP 数据包(gpgsplit
)并将它们重新按正确的顺序组合在一起。最好升级到 GnuPG 2.1,这样就可以了很多更轻松。
通过 删除卡密钥gpg --edit-key [key-id]
,然后使用gpg --import
导入(缺失的)子密钥。GnuPG 2.1 可能会安装为gpg2
。请注意,GnuPG 2.1 将密钥存储在文件中pubring.gpg
,因此 GnuPG 1 或 2.0 将找不到它,除非您将其再次导出并导入旧版本。