![](/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.