首页 > 解决方案 > 通过java将PKCS#1格式的私钥转换为PKCS#8格式的私钥

问题描述

我有一个像这样的 PKCS#1 格式的私钥(由 opendkim-genkey 生成)

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

Base64 encoded data

-----END RSA PRIVATE KEY-----

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

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

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

标签: javaprivate-keypkcs#1pkcs#8

解决方案


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


PrivateKey k如果你有一个对象,你可以使用 BouncyCastle 来做到这一点。

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

推荐阅读