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());
}