![如何匹配导出的 OpenPGP 公钥和私钥对?](https://linux22.com/image/880607/%E5%A6%82%E4%BD%95%E5%8C%B9%E9%85%8D%E5%AF%BC%E5%87%BA%E7%9A%84%20OpenPGP%20%E5%85%AC%E9%92%A5%E5%92%8C%E7%A7%81%E9%92%A5%E5%AF%B9%EF%BC%9F.png)
我备份了几个公钥和私钥文件,如何查看哪个公钥文件对应哪个私钥文件?
我使用以下方法生成了 2048 字节的 GnuPG 公钥和私钥对
gpg --gen-key
为了备份公钥,我使用以下方式导出它们
gpg --armor --output ~/gpg_keys_backup/<Public Key Id>-public.key --export <Public Key Id>
为了备份私钥,我使用以下方式导出它们
gpg --armor --output ~/gpg_keys_backup/<Private Key ID>-private.key --export-secret-keys <Private Key ID>
如何确定哪些备份密钥属于一对?
答案1
通过列出密钥文件的内容,可以查询某个密钥属于哪个公钥。
gpg --list-packets [secret-key-file] | head
:secret key packet:
version 4, algo 1, created 1356475387, expires 0
pkey[0]: [8192 bits]
pkey[1]: [17 bits]
gnu-dummy S2K, algo: 0, simple checksum, hash: 0
protect IV:
keyid: 4E1F799AA4FF2279
引用的最后一行keyid
包含公钥的长密钥 ID。
答案2
首先,公钥 ID 和私钥 ID 是相同的,因此您的文件名应该首先匹配。
第二,其实公钥是不需要备份的,只要导入私钥(私钥包含公钥和私钥),公钥和私钥都会被导入。
gpg --import private.key
但假设文件名由于某种原因不匹配,那么你可以运行
gpg yourfile.key
,它将打印类似以下内容的内容:
pub 2048R/1234ABCD 2016-12-31
sub 2048R/5678EFGH 2016-12-31
匹配私钥/公钥的密钥 ID(此示例中为 1234ABCD)。
如果您有大量密钥,那么与其匹配它们,不如简单地忽略导出的公钥并从私钥重新生成它们,这可能会更容易。
gpg --import private.key
gpg --armor --output <Key Id>-public.key --export <Key Id>