【发布时间】: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