![](/img/trans.png)
[英]Is there a Java standard library to directly construct PrivateKey and PublicKey objects from key files generated by ssh-keygen?
[英]Construct a Java PrivateKey object from an SSLeay formatted key
我正在研究一个Java(JSE 7)应用程序,该应用程序从外部服务器接收SSLeay格式的私钥,并且需要构造一个java.security.PrivateKey派生的对象。 由于密钥是动态接收的,并且应用程序被禁止使用JNI,因此我无法使用openssl转换密钥。
相反,我正在寻找一种纯Java解决方案,用于从SSLeay转换为PKCS#8或其他可以构造PrivateKey的格式。
Googling显示了几个处理SSLeay密钥的第三方库(例如,一个来自“ Entrust”的密钥),但不幸的是,此实现限制为不使用外部库。 是的我知道。 甚至没有下议院。
是否有人知道JSE 7标准库中的任何工具可以帮助您解决此问题? 我不介意亲自编写转换,但是很难找到SSLeay的精确规范。
谢谢您的指点!
请注意,这个答案只有在像我一样受到限制的情况下才有用,以避免使用任何第三方库。 如果被允许使用BouncyCastle或其他库,那大概是一种更好的方法。
我收到的密钥是编码为PEM的OpenSSL(“传统SSLeay”)DER格式的RSA密钥。 我可以通过以下方式获取Java java.security.PrivateKey
对象:
String.replace
除去PEM字符串中的RSA密钥标头和页脚。 DatatypeConverter.parseBase64Binary()
从PEM字符串获取字节数组。 BigInteger
:版本,模数,公共指数,私有指数,素数P,素数Q,素数指数P,素数Q和CRT系数(按此顺序)。 java.security.spec.RSAPrivateCrtKeySpec
对象( keySpec
)。 PrivateKey key = KeyFactory.getInstance("RSA").generatePrivate(keySpec);
这出于我的目的而工作,但是不幸地是重新发明了两个轮子。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.