这是我用来生成DH键盘的代码:
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DH");
keyGen.initialize(1024, new SecureRandom());
KeyPair ackp = keyGen.generateKeyPair();(当然,没有所需的尝试/捕捉)。
我已经做了一些测试,迭代地运行这样的代码,并改变键大小(特别是从128增加到1024。1024将是所需的大小。
首先,运行每个大小的第10代,在结果上有一些最小的std偏差,结果的波动很大,无论如何,创建键(1024位)所需的时间是: 683027ms,大约在11分钟左右创建一个键。
问题如下:
测试已经在Nexus-One手机上运行。
提前感谢您在“问题”上给出了一些启示。
问候
发布于 2010-03-24 17:54:00
我做了一些进一步的编码/研究,显然那是最耗时的电话(电池?)消费是:
new SecureRandom()特别是,对于DH来说,参数(g,p,l)可以预先计算并进行硬编码,因此事先这样做并使用生成的值生成密钥对(几乎是瞬时的)是明智的建议。
示例代码:
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DH");
keyGen.initialize(new DHParameterSpec(p, g, l));
KeyPair ackp = keyGen.generateKeyPair();其中p,g,l是:
final BigInteger p = new BigInteger("X");
final BigInteger g = new BigInteger("Y");
final int l = 1023;X和Y可以脱机生成:
AlgorithmParameterGenerator paramGen = AlgorithmParameterGenerator.getInstance("DH");
paramGen.init(1024, new SecureRandom());
AlgorithmParameters params = paramGen.generateParameters();
DHParameterSpec dhSpec = (DHParameterSpec)params.getParameterSpec(DHParameterSpec.class);
System.out.println("p: " + dhSpec.getP() + "\ng: " + dhSpec.getG() + " \nl: " + dhSpec.getL());https://stackoverflow.com/questions/2469235
复制相似问题