从SSLeay格式的密钥构造Java PrivateKey对象
我正在开发一个Java(JSE 7)应用程序,该应用程序从外部服务器接收SSLeay格式的私钥,并需要构造一个Java.security.PrivateKey派生对象。由于密钥是动态接收的,并且应用程序禁止使用JNI,因此我无法使用openssl转换密钥 相反,我正在寻找一个纯Java解决方案,用于将SSLeay转换为PKCS#8或其他格式,从而构建私钥 Google展示了两个处理SSLeay密钥的第三方库(例如,一个来自“委托”),但不幸的是,在这个实现中,我被限制不使用外部库。是的,我知道。甚至连公地也没有 有人知道JSE7标准库中有什么工具可以帮助实现这一点吗?我不介意自己费力地编写转换,但我很难找到SSLeay的精确规范从SSLeay格式的密钥构造Java PrivateKey对象,java,openssl,private-key,Java,Openssl,Private Key,我正在开发一个Java(JSE 7)应用程序,该应用程序从外部服务器接收SSLeay格式的私钥,并需要构造一个Java.security.PrivateKey派生对象。由于密钥是动态接收的,并且应用程序禁止使用JNI,因此我无法使用openssl转换密钥 相反,我正在寻找一个纯Java解决方案,用于将SSLeay转换为PKCS#8或其他格式,从而构建私钥 Google展示了两个处理SSLeay密钥的第三方库(例如,一个来自“委托”),但不幸的是,在这个实现中,我被限制不使用外部库。是的,我知道。
谢谢你的指点 请注意,这个答案只有在像我一样,为了避免使用任何第三方库而受到限制时才有用。如果允许您使用BouncyCastle或其他库,那么这可能是一种更好的方法 我收到的密钥是编码到PEM的OpenSSL(“传统SSLeay”)DER格式的RSA密钥。我能够通过以下方式获得Java
Java.security.PrivateKey
对象:
String.replace
删除PEM字符串中的RSA密钥页眉和页脚DatatypeConverter.parseBase64Binary()
从PEM字符串获取字节数组BigInteger
s:版本、模、公共指数、私有指数、素数P、素数Q、素数指数P、素数指数Q和CRT系数(按该顺序)java.security.spec.rsaprovatecrtkeyspec
对象(keySpec
)PrivateKey=KeyFactory.getInstance(“RSA”).generatePrivate(keySpec)代码>