2017-07-25 3 views
0

Je suis en train de générer une paire de clés DH où la clé publique a 2048 bits de longueur, mais à chaque fois il est plusGénération de la clé DH est trop grand

Mon code est

private static BigInteger g = new BigInteger("1234567890"); 
private static BigInteger p = new BigInteger("2"); 
private int l = 2048 

    Security.addProvider(new BouncyCastleProvider()); 

    DHParameterSpec dhParams = new DHParameterSpec(p, g, l); 
    KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DH", "BC"); 

    keyGen.initialize(dhParams); 

il semble l fonctionne param mal ou je l'ai mal compris et je ne sais pas comment le réparer. Merci pour le conseil

Répondre

1

Je pense que vous méprendre sur le 'l' (aussi 'p' et 'g'). Tout d'abord, il est facultatif, vous pouvez donc utiliser new DHParameterSpec (p, g). Deuxièmement, lorsqu'il est utilisé, il est typiquement beaucoup plus court que la longueur de bit de 'p' (qui est censé être le module de départ, pas "2"), par ex. au RFC 7919, Annexe A.1. spécifie un module de 2048 bits 'p' et un générateur 'g' = "2", pour lequel la valeur minimale recommandée de 'l' est de 225. Cela signifie qu'il est considéré comme sûr de choisir un exposant secret (clé privée) seulement 225 bits longs, ce qui accélère considérablement la génération de clés et les opérations DH.

Je recommande probablement que vous utilisez juste que jeu de paramètres RFC 7919.