我试图生成DH密钥对,其中公钥长度为2048位,但每次都更大
我的代码是
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工作错误或我误解了它并且不知道如何解决它。
感谢您的建议
答案 0 :(得分:1)
我认为你误解了'l'参数(也是'p'和'g')。首先,它是可选的,所以你可以使用新的DHParameterSpec(p,g)。其次,当使用它时,它通常比'p'的比特长度短得多(它应该是素数模数,而不是“2”),例如,在RFC 7919,附录A.1。指定2048位模数'p'和发生器'g'=“2”,建议的最小'l'值为225.这意味着仅选择秘密指数(私钥)被认为是安全的225位长,可显着加快密钥生成和DH操作。
我可能会建议您只使用RFC 7919中的参数集。
答案 1 :(得分:0)
你想要的是KeyPairGenerator :: initialize(int),其中int是要生成的键的大小。
https://docs.oracle.com/javase/7/docs/api/java/security/KeyPairGenerator.html#initialize(int)