【问题标题】:Convert java.security.PublicKey into bouncy castle PGPPublicKey将 java.security.PublicKey 转换为充气城堡 PGPPublicKey
【发布时间】:2016-09-07 21:14:37
【问题描述】:

我正在尝试使用充气城堡加密字符串。我用来检索加密公钥的库将其作为 java.security.PublicKey 对象返回。如何将其转换为 PGPPublicKey 对象,以便我可以使用它来加密文件。

【问题讨论】:

  • X.509 密钥和 OpenPGP 密钥都可以依赖于相同的加密原理,但具有完全不同的格式。 OpenPGP 密钥不仅仅是 RSA 数字。通常,您永远不需要转换它们,并且通常您会尝试做比要求更复杂的事情。如果您需要 OpenPGP 密钥和加密,请通过 BouncyCastle 生成/读取它们。如果您需要 X.5009 密钥和加密,请使用标准 Java 库。
  • 密钥是使用 gpg 生成的。但是,我们用于存储密钥的源将它们作为 java.security.PublicKey 对象返回。我知道每当我做 key.getEncoded() 时,我都会得到密钥本身的字节数组表示。但是,我知道创建密钥的所有方法都需要通过密钥环获取它们。是否可以直接使用字节数组创建 PGPPublicKey 对象?
  • 您可以在RFC 4880 中了解 OpenPGP 密钥是如何形成的。为了重新创建 OpenPGP 密钥,您至少还需要密钥创建时间戳。我对 Java API 和 BouncyCastle 都不太习惯,所以我无法为您提供详细信息。
  • 您需要将存储密钥的方式更改为完全保留 OpenPGP 密钥的方式。

标签: cryptography bouncycastle public-key-encryption pgp


【解决方案1】:

您可以使用 Bouncy Castle JcaPGPKeyConverter.getPGPPublicKey(int algorithm, PublicKey pubKey, Date time) 转换密钥

注意:传入的时间会影响密钥的 keyID 的值,因此您可能只想为 JCA 密钥执行一次,或者确保跟踪您使用的时间。

https://borelly.net/cb/docs/javaBC-1.4.8/pg/org/bouncycastle/openpgp/operator/jcajce/JcaPGPKeyConverter.html

【讨论】:

    猜你喜欢
    • 2012-11-13
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多