首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >?生署在Android上的Keypair生成时间

?生署在Android上的Keypair生成时间
EN

Stack Overflow用户
提问于 2010-03-18 11:01:56
回答 1查看 3.8K关注 0票数 3

这是我用来生成DH键盘的代码:

代码语言:javascript
复制
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DH");
keyGen.initialize(1024, new SecureRandom());
KeyPair ackp = keyGen.generateKeyPair();

(当然,没有所需的尝试/捕捉)。

我已经做了一些测试,迭代地运行这样的代码,并改变键大小(特别是从128增加到1024。1024将是所需的大小。

首先,运行每个大小的第10代,在结果上有一些最小的std偏差,结果的波动很大,无论如何,创建键(1024位)所需的时间是: 683027ms,大约在11分钟左右创建一个键。

问题如下:

  1. 还有其他人得到同样的结果吗?
  2. 是否有一些优化以达到更低的时间?
  3. 是什么高波动依赖的?(即生成一个1024位的密钥,它可能需要18秒到30分钟.)

测试已经在Nexus-One手机上运行。

提前感谢您在“问题”上给出了一些启示。

问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-24 17:54:00

我做了一些进一步的编码/研究,显然那是最耗时的电话(电池?)消费是:

代码语言:javascript
复制
new SecureRandom()

特别是,对于DH来说,参数(g,p,l)可以预先计算并进行硬编码,因此事先这样做并使用生成的值生成密钥对(几乎是瞬时的)是明智的建议。

示例代码:

代码语言:javascript
复制
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DH");
keyGen.initialize(new DHParameterSpec(p, g, l));
KeyPair ackp = keyGen.generateKeyPair();

其中p,g,l是:

代码语言:javascript
复制
final BigInteger p = new BigInteger("X");
final BigInteger g = new BigInteger("Y");
final int l = 1023;

X和Y可以脱机生成:

代码语言:javascript
复制
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());
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2469235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档