2017-07-25 212 views
0

我試圖生成DH密鑰對,其中公共密鑰具有2048位長度的,但每次它更大生成DH密鑰太大

我的代碼是

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

似乎l PARAM作品錯誤或我誤解了它,不知道如何解決它。 感謝您的建議

回答

1

我想你誤會了 'L' 參數(也 'p' 和 'G')。首先,它是可選的,所以你可以使用新的DHParameterSpec(p,g)。其次,當使用時,它典型地比'p'的位長度短(假定它是主模數,而不是「2」),例如,在RFC 7919,附錄A.1。指定一個2048位模數'p'和一個生成器'g'=「2」,對此,建議的最小'1'值爲225.這意味着選擇一個祕密指數(私鑰)225比特長,這顯着加速了密鑰生成和DH操作。

,我可能會建議你只使用該參數從RFC設置7919