如何在Java密钥库中存储Bouncy Castle PGP密钥?

时间:2016-03-10 22:11:19

标签: java bouncycastle pgp openpgp

我有一个JKS密钥库,它在我的应用程序中保留了几个私钥/公钥对。已经使用密钥库的密码保护了它。我添加了用于与Bouncy Castle一起使用OpenPGP的密钥,我需要生成几个密钥才能与Bouncy Castle PGP一起使用。我知道我可以将这些密钥存储为单独的文件,但是这些文件需要使用密码单独保护,这会给用户带来麻烦。我想将PGP密钥存储在现有的密钥库中。我已经阅读了Stackoverflow上的几个回复,暗示它是可能的,但没有明确的答案。那么我可以将PGP密钥存储在现有的密钥库中吗?

这就是我的想法。 Bouncy Castle的PGP课程没有实现密钥或证书。它有JcaPGPKeyPair,可以包装PrivateKey / PublicKey实例。所以我可以在JCE中创建密钥,然后" import"使用JcaPGPKeyPair将JCE密钥锁入BC PGP基础结构。一旦我完成了,我就扔掉了所有的BC PGP实例,并在我再次需要它时重新创建。可能使用JcaPGPKeyConverter来完成JCE密钥和PGP密钥之间转换的繁重工作?

我可以将2个JCE RSA或DSA密钥对用于PGP想要使用的签名密钥和加密密钥吗?如果我想使用这些密钥,请将它们保存在Keystore中并根据需要重建PGP基础架构?

1 个答案:

答案 0 :(得分:3)

  

我想将PGP密钥存储在现有的密钥库中。我已经阅读了Stackoverflow的几个回复,暗示它是可能的,但没有关于如何做出明确答案。那么我可以将PGP密钥存储在现有的密钥库中吗?

Java密钥库不支持OpenPGP密钥。 OpenPGP是另一个与X.509不兼容的标准。

  

Bouncy Castle的PGP课程没有实现Key或Certificate。它有JcaPGPKeyPair,可以包装PrivateKey / PublicKey实例。所以我可以在JCE中创建密钥,然后使用JcaPGPKeyPair将JCE密钥“导入”BC PGP基础设施。一旦我完成,我扔掉所有的BC PGP实例,并在我再次需要它时重新创建。可能使用JcaPGPKeyConverter来完成JCE密钥和PGP密钥之间转换的繁重工作?

     

我可以将2个JCE RSA或DSA密钥对用于PGP想要使用的签名密钥和加密密钥吗?如果我想使用这些密钥,请将它们保存在Keystore中并根据需要重建PGP基础架构?

您可能会提取形成公钥和私钥的普通数字,但会丢失有关用户ID,时间戳等的所有信息,您每次都必须重新构建这些信息。我不会去寻找一条如此脆弱且容易出错的道路。 OpenPGP和X.509密钥属性没有真正的映射,并且证书(密钥上的签名)变得更糟。