gpt4 book ai didi

Java Create KeyPair 在虚拟机上挂起,但在物理系统上工作

转载 作者:行者123 更新时间:2023-11-30 02:49:27 25 4
gpt4 key购买 nike

我有一些 Java 代码,正在使用 JCS 和 Bouncey CaSTLe 创建 key 对。当我在物理 Linux 系统(例如我的桌面)上创建 key 对时,它工作正常。 key 生成需要一两秒的时间。当我在虚拟机上运行相同的代码时, key 生成通常会“挂起”(我让它运行最多 5 分钟)。有时它会在 30 秒内完成,但这种情况很少见。

我猜测这与虚拟机上没有足够的随机性有关,但我不知道如何解决这个问题。

这是从我的实际程序代码中提取并压缩的测试代码:

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;

public class KeyPairCreateTester {
private static final String RANDOM_ALGO = "SHA1PRNG";

public static void main(String[] args) {
final String keyAlgo = "RSA";
final int keySize = 2048;

try {
System.out.printf("Creating random instance using %s\n", RANDOM_ALGO);
SecureRandom random = SecureRandom.getInstance(RANDOM_ALGO);
System.out.printf("Creating key using algo %s size %d\n", keyAlgo, keySize);
KeyPairGenerator keygen = KeyPairGenerator.getInstance(keyAlgo);
System.out.printf("Initialize\n");
keygen.initialize(keySize, random);
System.out.printf("Generating key\n");
KeyPair keyPair = keygen.generateKeyPair();
System.out.println("Success");
} catch (NoSuchAlgorithmException e) {
System.err.println("No such algo");
}
}

}

“挂起”发生在“生成 key ”之后。

将 keySize 调整为 512 效果甚微。在 512 处, key 生成的频率增加了几次,但大部分时间它仍然挂起至少 5 分钟。

物理机和虚拟机均为Ubuntu 16.04。

Java 是 1.8.0_72 + 1.8.0_101(我都尝试过)。

非常感谢对此的一些指导。这让我发疯!

最佳答案

通过安装haveged包并启动该服务(systemctl starthaveged)解决了问题。

关于Java Create KeyPair 在虚拟机上挂起,但在物理系统上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39173676/

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