java pem获取私钥_从RSA .pem文件中获取私钥

小编典典

我正在使用 BouncyCastle 1.57 (bcprov-jdk15on,bcmail-jdk15on和bcpkix-jdk15on)和

Java 7 。

您可以使用JcaPEMKeyConverter该类读取私钥。以下代码适用于带有和不带有密码的密钥:

import org.bouncycastle.jce.provider.BouncyCastleProvider;

import org.bouncycastle.openssl.PEMDecryptorProvider;

import org.bouncycastle.openssl.PEMEncryptedKeyPair;

import org.bouncycastle.openssl.PEMKeyPair;

import org.bouncycastle.openssl.PEMParser;

import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;

import org.bouncycastle.openssl.jcajce.JcePEMDecryptorProviderBuilder;

// don't forget to add the provider

Security.addProvider(new BouncyCastleProvider());

String password = "your password";

// reads your key file

PEMParser pemParser = new PEMParser(new FileReader(keyFile));

Object object = pemParser.readObject();

JcaPEMKeyConverter converter = new JcaPEMKeyConverter().setProvider("BC");

KeyPair kp;

if (object instanceof PEMEncryptedKeyPair) {

// Encrypted key - we will use provided password

PEMEncryptedKeyPair ckp = (PEMEncryptedKeyPair) object;

// uses the password to decrypt the key

PEMDecryptorProvider decProv = new JcePEMDecryptorProviderBuilder().build(password.toCharArray());

kp = converter.getKeyPair(ckp.decryptKeyPair(decProv));

} else {

// Unencrypted key - no password needed

PEMKeyPair ukp = (PEMKeyPair) object;

kp = converter.getKeyPair(ukp);

}

// RSA

KeyFactory keyFac = KeyFactory.getInstance("RSA");

RSAPrivateCrtKeySpec privateKey = keyFac.getKeySpec(kp.getPrivate(), RSAPrivateCrtKeySpec.class);

System.out.println(privateKey.getClass());

所述privateKey的类将是java.security.spec.RSAPrivateCrtKeySpec(延伸RSAPrivateKeySpec)。

2020-09-28

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值