2011-12-21 77 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。这个值是固定的并且没有安全影响,这并不是什么不寻常的事情。

有一些已知的已知弱指数 - 但该值不属于它。

相关问题