java - 通过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?
解决方案
免责声明:我自己没有想出这个解决方案,它是由 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();
}
推荐阅读
- python - 在python中查找对应的列
- reactjs - 如何在 CRA 构建期间将 scss 编译包含到 css
- angular - 如何在 Angular 中的 CSV 中创建多行标题?
- jquery - NUXT中按钮的回调函数未触发
- php - 使用 getID3() 编写 .mp3 标签 - PHP 7.2.31
- android - 如何存储用户输入会话并再次检索它?
- java - 使用java从xml转换后如何从json中删除根节点
- ios - AppStore 与 TestFlight 的按需资源下载速度
- python - 如何在 macOS 上更快地截取屏幕截图?
- sql - 我的 sql 查询有一个问题..就像我需要多行数据到一行