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


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


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

最佳答案

如果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);

关于java - 什么时候SecureRandom.getInstanceStrong()抛出NoSuchAlgorithmException?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55675003/

10-12 15:58