2017-07-25 147 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