KeyFactory.generatePublic()需要很长时间/挂起

时间:2018-05-11 20:47:18

标签: java rsa hang

我正在使用以下密钥工厂实例:

factory = KeyFactory.getInstance("RSA", "BCFIPS");

当我在下面的代码中生成公钥时,它会挂起很长时间:

publickey = factory.generatePublic(spec);

有时代码会在1分钟内返回,有时会在5分钟内返回,有时甚至会在10分钟内返回。

知道是否有任何已知问题。 这个问题只发生在RHEL 6上。在RHEL7中,它运行得很快。

1 个答案:

答案 0 :(得分:1)

这是一个缓慢生成熵的问题。请参阅 Avoiding JVM Delays Caused by Random Number Generation

要点是,您必须使用/dev/urandom代替/dev/random。 在文本编辑器中打开$JAVA_HOME/jre/lib/security/java.security文件 并将securerandom.source的值从file:/dev/random更改为 file:/dev/urandom

但是,请注意生成的随机数的质量 如果你担心国家级的攻击你应该是低级的 只接受延迟并继续使用/dev/random

请注意,即使您指定了/dev/random,系统也会一度使用/dev/urandom。如果您更改此设置并且仍然看到长延迟,请将其更改为/dev/./urandom以避免硬编码测试。