2011-12-21 44 views
0

我在使用java爲RSA生成公鑰時遇到了問題。我使用KeyPairGenerator,並獲得公共密鑰,私鑰,p,q和模數。沒事。但每次公鑰都是65537.每次都有可能產生不同的公鑰嗎?Java RSA如何生成不同的公鑰?

代碼:

KeyPair keys; 
KeyPairGenerator generator; 

try { 
    generator = KeyPairGenerator.getInstance("RSA"); 
    generator.initialize(1024); 
    keys = generator.genKeyPair(); 
} catch (NoSuchAlgorithmException ex) {} 
+1

向我們顯示您的代碼。你必須做出錯誤的事情。 – 2011-12-21 11:52:13

回答

1

公鑰不能簡單65537,因爲在RSA的公開密鑰是一個對(N,E),其中n是模數,e是指數。通常,指數等於65537,並且它是變化的模數。

因此,爲了確保您生成不同的密鑰每次檢查模量變化。

+0

模數,p,q和私鑰每次都不相同 – Chris 2011-12-21 13:02:37

+0

如果模數每次都不相同,那麼公鑰也會每次都不一樣。該指數e通常被選擇成爲維基百科的文章在「密鑰生成」 65537檢查步驟4:http://en.wikipedia.org/wiki/RSA_%28algorithm%29 – 2011-12-21 13:31:26

+0

我鑄造RSAPublicKey公共=(RSAPublicKey) keys.getPublic();獲取我使用.getPublicExponent()的公鑰。我做錯了嗎?與我使用的私鑰相同getPrivateExponent() – Chris 2011-12-21 13:52:42

2

值65537是commonly used exponent of RSA keys。這個值是固定的並且沒有安全影響,這並不是什麼不尋常的事情。

有一些已知的已知弱指數 - 但該值不屬於它。

相關問題