简体   繁体   English

使用 java 将 PKCS#8 私钥转换为 PKCS#1 私钥

[英]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.

相关问题 在PK中将PKCS#8私钥转换为PEM - Convert a PKCS#8 private key to PEM in java 将椭圆曲线私钥转换为(未加密的)PKCS#8 格式 - Convert elliptic curve private key to (unencrypted) PKCS#8 format 将.der文件中的私钥导出为PKCS#1 - export private key in .der file as PKCS#1 无法使用带有Java keyStore的PKCS#1私钥进行客户端身份验证 - Unable do client authentication with PKCS#1 private key with java keyStore 如何在Java中解码PKCS#5加密的PKCS#8私钥 - How can I decode a PKCS#5 encrypted PKCS#8 Private Key in Java 通过 java 将 PKCS#1 格式的私钥转换为 PKCS#8 格式的私钥 - Convert PKCS#1-formatted private key to PKCS#8-formatted private key by java 通过 bouncycastle 读取 PKCS#8 格式的加密私钥,Java 在 docker 容器中失败 - Reading encrypted private key in PKCS#8 format through bouncycastle, Java failing in docker container 如何使用Java 7将ssh-rsa公钥转换为PEM PKCS#1公钥格式 - how to convert ssh-rsa public key to PEM PKCS#1 public key format using java 7 将 RSA PKCS1 私钥字符串转换为 Java PrivateKey 对象 - Convert an RSA PKCS1 private key string to a Java PrivateKey object HSM 错误 | 私钥必须是 RSAPrivate(Crt)Key 的实例或具有 PKCS#8 - HSM Error | Private key must be instance of RSAPrivate(Crt)Key or have PKCS#8
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM