Класс SecureRandomSpi
- java.lang.Object
-
- java.security.SecureRandomSpi
- Все реализованные интерфейсы:
Serializable
public abstract class SecureRandomSpi extends Object implements Serializable
Этот класс определяет интерфейс поставщика сервисов (SPI) для класса SecureRandom.
Все абстрактные методы в этом классе должны быть реализованы каждым поставщиком сервиса, желающим предоставить реализацию криптографически стойкого псевдослучайного генератора чисел.
- Требования к реализации:
- Если конструктор
SecureRandomSpi(SecureRandomParameters)переопределен в реализации, он всегда будет вызываться при каждом создании объектаSecureRandom. Точнее, если объект создается с использованием одного из методовSecureRandomбез параметраSecureRandomParameters, конструктор будет вызван с аргументомnull, и реализация отвечает за создание собственного параметраSecureRandomParameters, который будет использоваться при вызовеengineGetParameters(). Если объект создается с использованием одного из методовSecureRandomс аргументомSecureRandomParameters, конструктор будет вызван с этим аргументом. МетодengineGetParameters()не должен возвращатьnull.В противном случае, если конструктор
SecureRandomSpi(SecureRandomParameters)не переопределен в реализации, конструкторSecureRandomSpi()должен быть переопределен, и он будет вызван, если объект создается с использованием одного из методовSecureRandomбез аргументаSecureRandomParameters. Вызов одного из методовSecureRandomс аргументомSecureRandomParametersникогда не вернет экземпляр этой реализации. МетодengineGetParameters()должен возвращатьnull.См.
SecureRandomдля получения дополнительных сведений о потоковой безопасности. По умолчанию реализацияSecureRandomSpiне считается безопасной для использования несколькими потоками одновременно, иSecureRandomбудет синхронизировать доступ к каждому из применимых методов движка (см.SecureRandomдля списка методов). Однако, если реализацияSecureRandomSpiпотокобезопасна, атрибут поставщика сервиса "ThreadSafe" должен быть установлен в значение "true" во время его регистрации, следующим образом:put("SecureRandom.AlgName ThreadSafe", "true");илиputService(new Service(this, "SecureRandom", "AlgName", className, null, Map.of("ThreadSafe", "true")));SecureRandomбудут вызывать соответствующие методы движка без синхронизации. - С:
- 1.2
- См. также:
- Сериализованная форма
Конструкторы
| Модификатор | Конструктор | Описание |
|---|---|---|
SecureRandomSpi() | Конструктор без параметров. | |
protected | SecureRandomSpi(SecureRandomParameters params) | Конструктор с параметром. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
protected abstract byte[] | engineGenerateSeed(int numBytes) | Возвращает заданное количество байтов семян. |
protected SecureRandomParameters | engineGetParameters() | Возвращает эффективные параметры |
protected abstract void | engineNextBytes(byte[] bytes) | Генерирует заданное количество случайных байтов. |
protected void | engineNextBytes(byte[] bytes,
SecureRandomParameters params) | Генерирует заданное количество случайных байтов с дополнительными параметрами. |
protected void | engineReseed(SecureRandomParameters params) | Перезапускает этот объект генератора случайных чисел с помощью входных данных энтропии, полученных из источника энтропии с дополнительными параметрами. |
protected abstract void | engineSetSeed(byte[] seed) | Перезапускает этот объект генератора случайных чисел с заданным семенем. |
String | toString() | Возвращает строку представления этого объекта |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitКонструкторы
SecureRandomSpi
public SecureRandomSpi()
Конструктор без параметров.
SecureRandomSpi
protected SecureRandomSpi(SecureRandomParameters params)
Конструктор с параметром.
- Параметры:
-
params- объектSecureRandomParameters. Этот аргумент может бытьnull. - Исключения:
-
IllegalArgumentException- еслиparamsне распознаётся или не поддерживается даннымSecureRandom - С:
- 9
Методы
engineSetSeed
protected abstract void engineSetSeed(byte[] seed)
Перезапускает этот объект генератора случайных чисел с заданным семенем. Семено дополняет, а не заменяет, существующее семя. Таким образом, повторяющиеся вызовы гарантированно не уменьшат случайность.
- Параметры:
-
seed- семя.
engineNextBytes
protected abstract void engineNextBytes(byte[] bytes)
Генерирует заданное количество случайных байтов.
Некоторые генераторы случайных чисел могут генерировать только ограниченное количество случайных байтов за один вызов. Если размер bytes превышает этот предел, реализация должна вызывать свой процесс генерации несколько раз, чтобы полностью заполнить буфер, прежде чем возвращаться из этого метода.
- Параметры:
-
bytes- массив, который нужно заполнить случайными байтами.
engineNextBytes
protected void engineNextBytes(byte[] bytes,
SecureRandomParameters params)Генерирует заданное количество случайных байтов с дополнительными параметрами.
Некоторые генераторы случайных чисел могут генерировать только ограниченное количество случайных байтов за один вызов. Если размер bytes превышает этот предел, реализация должна вызывать свой процесс генерации несколько раз, чтобы полностью заполнить буфер, прежде чем возвращаться из этого метода.
- Требования к реализации:
- Реализация по умолчанию выбрасывает
UnsupportedOperationException. - Параметры:
-
bytes- массив, который нужно заполнить случайными байтами -
params- дополнительные параметры - Исключения:
-
UnsupportedOperationException- если реализация не переопределила этот метод -
IllegalArgumentException- еслиparamsявляетсяnull, незаконным или не поддерживается даннымSecureRandom - С:
- 9
engineGenerateSeed
protected abstract byte[] engineGenerateSeed(int numBytes)
Возвращает заданное количество байтов семян. Этот вызов может быть использован для инициализации других генераторов случайных чисел.
- Параметры:
-
numBytes- количество байтов семян для генерации. - Возвращает:
- байты семян.
engineReseed
protected void engineReseed(SecureRandomParameters params)
Перезапускает этот объект генератора случайных чисел с помощью входных данных энтропии, полученных из источника энтропии с дополнительными параметрами.
Если этот метод вызывается методом SecureRandom.reseed(), params будет null.
Не переопределяйте этот метод, если реализация не поддерживает перезапуск.
- Требования к реализации:
- Реализация по умолчанию выбрасывает
UnsupportedOperationException. - Параметры:
-
params- дополнительные параметры, могут бытьnull. - Исключения:
-
UnsupportedOperationException- если реализация не переопределила этот метод -
IllegalArgumentException- еслиparamsнезаконно или не поддерживается даннымSecureRandom - С:
- 9
engineGetParameters
protected SecureRandomParameters engineGetParameters()
Возвращает эффективные параметры SecureRandomParameters для данного экземпляра SecureRandom.
- Требования к реализации:
- Реализация по умолчанию возвращает
null. - Возвращает:
- эффективные параметры
SecureRandomParameters, илиnullесли параметры не использовались. - С:
- 9
toString
public String toString()
Возвращает строку представления этого объекта SecureRandom в удобочитаемом формате.
- Переопределяет:
-
toStringв классеObject - Возвращает:
- строковое представление
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/security/SecureRandomSpi.html