2017-07-25 5 views
0

大きすぎるが、毎回それはだ大きな生成されたDHキーは、私は、公開鍵の長さが2048ビットを持っているDH鍵のペアを生成しようとしている

私のコードは、それがlのparam作品を思わ

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); 

です間違っている、または私はそれを誤解し、それを修正する方法を知らない。 アドバイスありがとう

答えて

1

私はあなたが 'l' のパラメータ(また、 'P' と 'G')を誤解だと思います。まず、オプションです。新しいDHParameterSpec(p、g)を使用することができます。第2に、使用されるとき、それは、典型的には、「p」のビット長(「2」ではなく、プライムモジュラスであると考えられる)よりもかなり短い。付録A.1 RFC 7919にあります。提案された最小のl値が225である2048ビットのモジュラス 'p'とジェネレータ 'g' = "2"を指定します。つまり、秘密指数(秘密鍵)225を選択することは安全であると考えられますキー生成とDH操作を大幅に高速化します。

関連する問題