Когда SecureRandom.getInstanceStrong() выдает исключение NoSuchAlgorithmException?

#java

#java

Вопрос:

Метод SecureRandom.getInstanceStrong() объявляет, что он может выдавать a NoSuchAlgorithmException , однако в документе говорится:

Каждая реализация платформы Java должна поддерживать хотя бы одну надежную реализацию SecureRandom.

При каких обстоятельствах это исключение может быть выдано? Может ли это произойти, только если свойство securerandom.strongAlgorithms определено пользователем и не содержит списка алгоритмов?

Ответ №1:

Похоже, это исключение действительно генерируется, если 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);