生成DH密钥太大
问题描述:
我试图生成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作品错误或我误解了它,不知道如何解决它。 感谢您的建议
答
你想要的是KeyPairGenerator :: initialize(int),其中int是要生成的键的大小。
https://docs.oracle.com/javase/7/docs/api/java/security/KeyPairGenerator.html#initialize(int)
答
我想你误会了 'L' 参数(也 'p' 和 'G')。首先,它是可选的,所以你可以使用新的DHParameterSpec(p,g)。其次,当使用时,它典型地比'p'的位长度短(假定它是主模数,而不是“2”),例如,在RFC 7919,附录A.1。指定一个2048位模数'p'和一个生成器'g'=“2”,对此,建议的最小'1'值为225.这意味着选择一个秘密指数(私钥)225比特长,这显着加速了密钥生成和DH操作。
,我可能会建议你只使用该参数从RFC设置7919
我有P的预设和,这种方法也适用太久移动 – Gorets