[英]Convert PKCS#8 Private key to PKCS#1 Private key using java
I have a PKCS#8 private key as a string in a variable.我有一个 PKCS#8 私钥作为变量中的字符串。 How to convert that into a PKCS#1 private key as a string
如何将其转换为 PKCS#1 私钥作为字符串
In other words, how to convert the below content换句话说,如何转换以下内容
-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----
to至
-----BEING RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
using java使用 java
PS: There is a straight forward solution in python here - Python convert Private Key to RSA Key Can some please give some pointers on how to do in Java PS:python 这里有一个直接的解决方案 - Python convert Private Key to RSA Key可以请一些关于如何在 Java 中做的指示
One possibility is BouncyCastle.一种可能是BouncyCastle。 This supports parsing and writing of PEM encoded keys as well as the conversion from PKCS#8 to PKCS#1:
这支持 PEM 编码密钥的解析和写入以及从 PKCS#8 到 PKCS#1 的转换:
import java.io.StringReader;
import java.io.StringWriter;
import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.ASN1Primitive;
import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
import org.bouncycastle.openssl.PEMParser;
import org.bouncycastle.openssl.jcajce.JcaPEMWriter;
import org.bouncycastle.util.io.pem.PemObject;
import org.bouncycastle.util.io.pem.PemObjectGenerator;
...
String pkcs8pem = "-----BEGIN PRIVATE KEY-----...";
// Parse
PEMParser pemParser = new PEMParser(new StringReader(pkcs8pem));
PrivateKeyInfo pkInfo = ((PrivateKeyInfo)pemParser.readObject());
pemParser.close();
// Convert
ASN1Encodable pkcs1ASN1Encodable = pkInfo.parsePrivateKey();
ASN1Primitive privateKeyPkcs1ASN1 = pkcs1ASN1Encodable.toASN1Primitive();
// Write
StringWriter stringWriter = new StringWriter();
JcaPEMWriter jcaPEMWriter = new JcaPEMWriter(stringWriter);
jcaPEMWriter.writeObject((PemObjectGenerator)new PemObject("RSA PRIVATE KEY", privateKeyPkcs1ASN1.getEncoded()));
jcaPEMWriter.close();
String pkcs1pem = stringWriter.toString(); // -----BEGIN RSA PRIVATE KEY-----...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.