gpt4 book ai didi

android - Android 上的 DH key 对生成时间

转载 作者:太空宇宙 更新时间:2023-11-03 12:25:39 28 4
gpt4 key购买 nike

这是我用来生成 DH key 对的代码:

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

(当然没有必要的 try/catch)。

我已经完成了一些测试,以迭代方式运行此类代码并改变 key 大小(特别是从 128 以 128 步长增加到 1024。1024 将是所需的大小。

首先,运行每个大小生成 10 次以使结果有一些最小的标准偏差会产生高波动的结果,平均而言,创建 key 所需的时间(1024 位 ) 是:683027 毫秒,四舍五入到大约 11 分钟,用于创建 key 。

问题是:

  1. 还有其他人得到相同的结果吗?
  2. 是否需要运行一些优化以实现更短的时间?
  3. 高波动取决于什么? (即生成 1024 位 key 可能需要 18 秒到 30 分钟...)

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

提前感谢您阐明“问题”

问候

最佳答案

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

new SecureRandom()

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

示例代码:

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 - Android 上的 DH key 对生成时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2469235/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com