什么时候SecureRandom.getInstanceStrong()抛出NoSuchAlgorithmException?

时间:2019-04-14 11:57:48

标签: java

方法SecureRandom.getInstanceStrong()声明它可以抛出NoSuchAlgorithmException,但是文档说:

  

Java平台的每个实现都必须支持至少一个强大的SecureRandom实现。

在什么情况下可以引发此异常?仅当属性securerandom.strongAlgorithms是用户定义的并且没有列出算法时,这种情况才会发生吗?

1 个答案:

答案 0 :(得分:2)

如果securerandom.strongAlgorithms配置不正确,确实会引发此异常。未经检查的异常可能是更好的选择。

http://hg.openjdk.java.net/jdk/jdk/file/ac56154f0b9e/src/java.base/share/classes/java/security/SecureRandom.java

if (property == null || property.isEmpty()) {
    throw new NoSuchAlgorithmException(
        "Null/empty securerandom.strongAlgorithms Security Property");
}

...

throw new NoSuchAlgorithmException(
            "No strong SecureRandom impls available: " + property);