2011-12-21 4 views
0

J'ai un problème avec la génération de clé publique pour RSA dans Java. J'utilise KeyPairGenerator et j'obtiens public, clé privée, p, q et module. C'est bon. Mais chaque fois que la clé publique est un 65537. Y at-il une possibilité de générer une clé publique différente à chaque fois?Java RSA comment générer une clé publique différente?

code:

KeyPair keys; 
KeyPairGenerator generator; 

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

Montrez-nous votre code. Vous devez faire quelque chose de mal. –

Répondre

1

La clé publique ne peut pas être simplement 65537, puisque dans RSA une clé publique est une paire (n, e) où n est le module et e est l'exposant. Typiquement, l'exposant est égal à 65537, et c'est le module qui change. Donc, afin de vous assurer que vous générez des clés différentes à chaque fois, vérifiez que le module change.

+0

le module, p, q et la clé privée sont différents à chaque fois – Chris

+0

Si le module est différent à chaque fois, alors la clé publique sera également différente à chaque fois. L'exposant e est généralement choisi comme étant 65537. Vérifiez l'étape 4 dans "Génération de clé" dans l'article wikipedia: http://en.wikipedia.org/wiki/RSA_%28algorithm%29 –

+0

Je lance RSAPublicKey public = (RSAPublicKey) keys.getPublic(); pour obtenir la clé publique, j'utilise .getPublicExponent(). Est-ce que je le fais mal? La même chose avec la clé privée J'utilise getPrivateExponent() – Chris

2

La valeur 65537 correspond à commonly used exponent of RSA keys. Il n'est pas inhabituel que cette valeur soit fixe et n'a aucune incidence sur la sécurité.

On connaît un certain nombre d'exposants faibles connus - mais cette valeur ne lui appartient pas.

Questions connexes