当前位置: 首页 > 知识库问答 >
问题:

无法用GnuPG导出机密PGP密钥

段铭晨
2023-03-14

在那之后,我试着拿回我的子键,以防它们还在身边。我可以看到我的钥匙和子钥匙在GPG钥匙串OSX应用程序。使用gpg-kgpg-k进行列表时,我获得了与主密钥和子密钥相关联的所有公钥,但只获得了主密钥和其中一个子密钥的秘密(我没有导出到yubikey的那个)。

尝试调试更多,我决定使用一个较新版本的gpg来合并密钥等等,希望我能拿回秘密(我想在这一点上它已经不可能了,但我一直在尝试)

使用GPG(Gnupg/MacGPG2)2.0.30,它告诉我有一个主密钥和两个秘密子密钥。

gpg -K
/Users/john/.gnupg/secring.gpg
------------------------------------
sec  4096R/XXXXXXXX 2016-07-07 [expires: 2020-07-07]
uid                  John Doe <john@doe.com>
ssb  4096R/YYYYYYYY 2016-12-28
ssb  4096R/ZZZZZZZZ 2017-09-16

使用GPG(GnuPG)2.1.20在具有相同密钥环的容器中(作为卷安装),它告诉我,我有一个主密钥和三个密钥子密钥。

gpg -K
/root/.gnupg/pubring.gpg
------------------------
sec   rsa4096 2016-07-07 [SC] [expires: 2020-07-07]
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
uid           [ultimate] John Doe <john@doe.com>
ssb   rsa4096 2016-07-07 [E] [expires: 2020-07-07]
ssb   rsa4096 2016-12-28 [S] [expires: 2020-07-07]
ssb   rsa4096 2017-09-16 [A] [expires: 2020-07-06]

如果我从第二个导出我的秘密密钥,从我的keyring中移除秘密密钥并导入导出的秘密密钥(希望得到丢失的秘密子密钥),我得到的只是?存根?

如果我打开并拆分导出的秘密密钥,我可以看到一些密钥文件是1.8K,而其他的只有0.5K,似乎他们并不真正包含一个秘密。

  • 为什么第二个和更新版本的GPG不告诉我它所有的都是存根?
  • 为什么导出时机密不列为存根而导入时不列为存根?
  • 有什么办法可以恢复我的秘密吗?(我猜不是)

共有1个答案

伍耀
2023-03-14

为什么第二个和更新版本的GPG不告诉我它所有的都是存根?为什么在导出+导入的时候秘密没有被列为存根?

您使用的是gpg 2.0。我有GPG2.1,下面是我的GPG-K输出的样子(大写K,即--list-secret-keys):

sec#  rsa4096/0xB1349B0B4B8B7600 2017-10-20 [SC] [expires: 2018-10-20]
      Key fingerprint = 0F4C 3317 9224 ACA4 C601  A8FB B134 9B0B 4B8B 7600
uid                   [ultimate] Rouben Tchakhmakhtchian <rouben@rouben.net>
uid                   [ultimate] Rouben Tchakhmakhtchian <rouben@rouben.ca>
uid                   [ultimate] Rouben Tchakhmakhtchian <rouben.tchakhmakhtchian@utoronto.ca>
ssb>  rsa4096/0x8032EA4BFC7DEEC0 2017-10-20 [S] [expires: 2018-10-20]
ssb>  rsa4096/0xEE1E4539902F8149 2017-10-20 [E] [expires: 2018-10-20]
ssb>  rsa4096/0x9812857C9C2436E1 2017-10-20 [A] [expires: 2018-10-20]

有办法恢复我的秘密吗?(我猜不是)

 类似资料:
  • 尝试使用示例代码,可从以下站点获得: https://github.com/chids/bouncy-castle-pgp 做了一些额外的测试,一切正常。 编辑:刚刚注意到在单元测试中使用的密钥也是RSA 2048位,所以不应该是这样的。

  • 我目前正在用java编写一个加密消息传递服务,我使用的是bouncycastle PGP库。我编写了一个生成密钥对的测试程序,并对消息进行加密/解密。这已经工作了一段时间,但它最近在解密阶段停止了,给了我一个InvalidKeyException。 我做了一些研究,下载了JCE.jar文件,并将它们导入到我的项目中(通过Eclipse Project->Properties->add extern

  • 我已经能够通过外部web应用程序使用oauth rest api访问azure key vault,但出于某种原因,我无法从密钥中检索机密。经过长时间的研究,我发现用powershell和C#可以做到这一点,但还没有找到用Python解决方案。有人知道python是否有可能,或者有一种方法可以模拟powershell正在做什么吗?以下是检索秘密的代码: 此外,我已经在azure portal中注册

  • 我正在使用GnuPG库加密解密消息。我已经在我的服务器上成功地确认了GPG扩展并生成了一个密钥对。此外,我还成功地导入了另一个公钥,并使用该公钥对数据进行了解密。

  • 问题内容: 我有一个名为’filename.txt.pgp’的PGP文件,需要解密。当我从命令行运行解密时,它仅询问我密码。我使用gpg命令: 密码足够,我的文件已解密。我可以阅读它的内容。 现在,我应该用Java创建一个实用程序。经过研究,我发现Bouncy Castle图书馆是我最好的选择。但是我可以找到的所有Java示例都使用我没有的公共/专用密钥文件。 您能帮我举一个Java示例,该示例仅

  • 问题内容: 我正在用Python编写程序,以通过安装程序分发给Windows用户。 该程序需要能够每天下载使用用户公钥加密的文件,然后再解密。 因此,我需要找到一个Python库,该库将允许我生成公共和私有PGP密钥,并解密使用该公共密钥加密的文件。 pyCrypto是否会做这件事(文档模糊)?还有其他纯Python库吗?使用任何语言的独立命令行工具如何? 到目前为止,我所看到的只是GNUPG,但