gpt4 book ai didi

java - Java 中 Bouncy CaSTLe 的性能

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:20:18 24 4
gpt4 key购买 nike

在生成 DH 参数时,我在使用 Bouncy CaSTLe Provider 时遇到了一些性能问题。有人知道为什么下面的 Bouncy CaSTLe 示例比使用标准提供程序慢 50 倍吗?

使用 Bouncy CaSTLe 提供程序:

Security.addProvider(new BouncyCastleProvider());
AlgorithmParameterGenerator generator = AlgorithmParameterGenerator.getInstance("DH", "BC");
for (int i = 0; i < 3; i++) {
generator.init(1024, new SecureRandom());
AlgorithmParameters params = generator.generateParameters();
DHParameterSpec dhSpec = (DHParameterSpec) params.getParameterSpec(DHParameterSpec.class);
System.out.println("P: " + dhSpec.getP() + ", G:" + dhSpec.getG());
}

使用标准提供者:

AlgorithmParameterGenerator generator = AlgorithmParameterGenerator.getInstance("DH");
for (int i = 0; i < 3; i++) {
generator.init(1024, new SecureRandom());
AlgorithmParameters params = generator.generateParameters();
DHParameterSpec dhSpec = (DHParameterSpec) params.getParameterSpec(DHParameterSpec.class);
System.out.println("P: " + dhSpec.getP() + ", G:" + dhSpec.getG());
}

最佳答案

速度差异的原因是 BC 提供者正在搜索“安全素数”,即素数 p:p = 2q + 1,其中 q 也是素数。

正如您所注意到的,这比仅仅找到一个素数要慢得多。标准提供商并未这样做,这一点很容易得到验证。

寻找一个安全的素数可能有点矫枉过正,因为对于某些 R,p = 2Rq + 1 可能就足够了,这可以实现相当快的实现,同时仍然确保 (p - 1) 的大素数。

您不必经常(如果有的话)自己生成这些参数。一个集合可用于多个 key 对,并且周围有标准化的参数集,您最好使用它们。

关于java - Java 中 Bouncy CaSTLe 的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13319109/

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