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



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

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

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

publickey = factory.generatePublic(spec);

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

任何想法是否有任何已知问题。 此问题仅在 RHEL 6 上发生。在RHEL7中,它工作速度很快。

这是熵生成缓慢的问题。 请参阅避免随机数生成导致的 JVM 延迟。

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

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

请注意,曾经存在一个问题,即使您指定了/dev/urandom,系统也会使用/dev/random。如果更改此设置但仍看到较长的延迟,请将其更改为/dev/./urandom以避免硬编码测试。

最新更新