Android上的DH Keypair生成时间

Android上的DH Keypair生成时间,第1张

概述这是我用来生成DH密钥对的代码: KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DH");keyGen.initialize(1024, new SecureRandom());KeyPair ackp = keyGen.generateKeyPair(); (当然没有必要的尝试/捕获). 我已经做了一些测试,迭代地运行这些代码 这是我用来生成DH密钥对的代码:

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DH");keyGen.initialize(1024,new SecureRandom());KeyPair ackp = keyGen.generateKeyPair();

(当然没有必要的尝试/捕获).

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

首先,运行每个大小生成10次以使结果具有一些最小的std偏差会导致结果的高波动,平均而言,创建密钥(1024位)所需的时间是:683027ms,其向上舍入到周围创建密钥需要11分钟.

问题是:

>其他人得到的结果是否相同?
>为了实现更低的时间,是否需要进行一些优化?
>什么是高波动依赖? (即生成1024位密钥,可能需要18秒到30分钟…)

测试已在Nexus-One手机上进行

提前感谢您对“问题”有所了解

问候

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

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());
总结

以上是内存溢出为你收集整理的Android上的DH Keypair生成时间全部内容,希望文章能够帮你解决Android上的DH Keypair生成时间所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1121695.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存