通过java将PKCS#1格式的私钥转换为PKCS#8格式的私钥

Tha*_* Vũ 6 java pkcs#8 pkcs#1 private-key

我有一个 PKCS#1 格式的私钥(由 opendkim-genkey 生成),如下所示

-----BEGIN RSA PRIVATE KEY-----

Base64 encoded data

-----END RSA PRIVATE KEY-----
Run Code Online (Sandbox Code Playgroud)

现在我必须在Java中使用它来生成java.security.PrivateKey

但Java仅支持PKCS#8格式的私钥。

我知道有一种方法可以通过 Java 从 PKCS#8 转换为 PKCS#1(使用 Bouncycastle),但是是否有通过 Java 从 PKCS#1 转换为 PKCS#8 的方法?

Ben*_*Ben 0

免责声明:这个解决方案不是我自己提出的,它是由 marcoscottwright 在 github 上编写的。在这里找到原始代码


如果您有一个对象,您可以使用 BouncyCastle 来执行此操作PrivateKey k

try (ASN1InputStream asn1InputStream = new ASN1InputStream(k.getEncoded()))
{
    DERObject rsaPrivateKey = asn1InputStream.readObject();
    return new PrivateKeyInfo(new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption), rsaPrivateKey).getDEREncoded();
}
Run Code Online (Sandbox Code Playgroud)