2015-06-05 69 views
1

所以我必須根據位長度,模數,第一個素數和公開指數生成一個私鑰(RSA)。生成給定模數,公開指數和素數的RSA密鑰

問題是我有模數和prime1在十六進制對。我試過手動做,但數量變得非常長(顯然)。我也嘗試過使用openssl genpkey,但是對於RSA,它沒有我需要的參數。

是否有人知道任何方式來做到這一點,否則我將不得不以十六進制/二進制手動操作?

+0

你將不得不編寫一個程序來做到這一點。 openssl命令行工具不會爲你做這件事。 –

+0

@GregS - 我認爲它比這更容易(我第一次閱讀它)。他有模數'n'和'p'。他只需要解決'q'。用'p','q'和'e',他可以有效地計算'd'。然後使用CRT恢復其他RSA私鑰參數,如'dp','dq'和'q-inv'。最後,他可以將它填入「RSA *」中。中提琴! – jww

+0

@jww是的,但我缺少了3對p值的十六進制值,所以我不得不「猜測」它們。我已經解決了它,但無論如何感謝您的時間! – lpares12

回答

-1

正如James K Polk評論這個問題,openssl不支持以這種方式生成密鑰。你必須親自編寫一個程序才能做到這一點。

例如,下面的Java代碼可以工作。您還需要處理異常。

BigInteger modulus = /* modulus here */; 
BigInteger exponent = /* exponent here */; 
KeyFactory keyFactory = KeyFactory.getInstance("RSA"); 
keyFactory.generatePrivate(new RSAPrivateKeySpec(modulus, exponent)); 
相關問題