java 加载 rsa pem_关于ssl:如何从RSA Privatekey.pem文件中获取java.security.PrivateKey对象?...

有一个私人的RSA密钥文件(ockey.pem)。我用Java from this to get the key的私人文件。using the key is generated this below OpenSSL命令行。注释:on this change anything我OpenSSL命令行的下面。P></

openssl> req -newkey rsa:1024 -sha1 -keyout OCkey.pem -out OCreq.pem -subj"/C=country/L=city/O=OC/OU=myLab/CN=OCserverName/" -config req.conf

如何看样below the认证。P></

///

bash-3.00$ less OCkey.pem

-----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3-CBC,EA1DBF8D142621BF

BYyZuqyqq9+L0UT8UxwkDHX7P7YxpKugTXE8NCLQWhdS3EksMsv4xNQsZSVrJxE3

Ft9veWuk+PlFVQG2utZlWxTYsUVIJg4KF7EgCbyPbN1cyjsi9FMfmlPXQyCJ72rd

... ...

cBlG80PT4t27h01gcCFRCBGHxiidh5LAATkApZMSfe6BBv4hYjkCmg==

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

就是我跟随P></

byte[] privKeyBytes = new byte[(int)new File("C:/OCkey.pem").length()];

PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(privKeyBytes));

但要P></

"java.security.spec.InvalidKeySpecException:

java.security.InvalidKeyException: invalid key format"

Please help。P></

确保privatekey为der格式,并且您使用的是正确的keyspec。我相信你应该在这里使用pkcs8作为privkeybytes。

确保privatekey为der格式,并且您使用的是正确的keyspec。我相信你应该在这里使用pkcs8作为privkeybytes

首先,需要将私钥转换为二进制DER格式。下面介绍如何使用openssl:

openssl pkcs8 -topk8 -inform PEM -outform DER -in private_key.pem -out private_key.der -nocrypt

最后,

public static PrivateKey getPrivateKey(String filename) throws Exception {

File f = new File(filename);

FileInputStream fis = new FileInputStream(f);

DataInputStream dis = new DataInputStream(fis);

byte[] keyBytes = new byte[(int) f.length()];

dis.readFully(keyBytes);

dis.close();

PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes);

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

return kf.generatePrivate(spec);

}

几天来我一直在寻找解决这个问题的方法。很好的解决方案。但是,pem参数对我不起作用,但是跳过它不会导致问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值