Класс SecureRandomSpi
- Все реализованные интерфейсы:
Serializable
public abstract class SecureRandomSpi extends Object implements Serializable
SecureRandom. Все абстрактные методы в этом классе должны быть реализованы каждым поставщиком сервисов, желающим предоставить реализацию криптографически сильного псевдослучайного генератора чисел.
- Требования к реализации:
- Если конструктор
SecureRandomSpi(SecureRandomParameters)переопределен в реализации, он всегда будет вызываться при каждом создании объектаSecureRandom. Точнее, если объект создаётся с помощью одного из методовSecureRandom'sgetInstanceбез параметраSecureRandomParameters, конструктор будет вызван с аргументомnull, и реализация отвечает за создание собственного параметраSecureRandomParametersдля использования при вызовеengineGetParameters(). Если объект создаётся с помощью одного из методовSecureRandom'sgetInstanceс аргументомSecureRandomParameters, конструктор будет вызван с этим аргументом. МетодengineGetParameters()не должен возвращатьnull.В противном случае, если конструктор
SecureRandomSpi(SecureRandomParameters)не переопределён в реализации, конструкторSecureRandomSpi()должен быть переопределён, и он будет вызван, если объект создаётся с помощью одного из методовSecureRandom'sgetInstanceбез аргументаSecureRandomParameters. Вызов одного из методовSecureRandom'sgetInstanceс аргументомSecureRandomParametersникогда не вернёт экземпляр этой реализации. МетодengineGetParameters()должен возвращатьnull.См.
SecureRandomдля получения дополнительных сведений о потокобезопасности. По умолчанию реализацияSecureRandomSpiсчитается небезопасной для использования несколькими одновременными потоками, иSecureRandomбудет синхронизировать доступ к каждому применимому методу движка (см.SecureRandomдля списка методов). Однако, если реализацияSecureRandomSpiпотокобезопасна, атрибут поставщика сервисов service provider attribute "ThreadSafe" должен быть установлен в "true" во время регистрации, следующим образом:
илиput("SecureRandom.AlgName ThreadSafe", "true");putService(new Service(this, "SecureRandom", "AlgName", className, null, Map.of("ThreadSafe", "true")));SecureRandomбудет вызывать соответствующие методы движка без синхронизации. - С:
- 1.2
- См. также:
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
| Конструктор без параметров. |
||
protected |
Конструктор с параметром. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
protected abstract byte[] |
engineGenerateSeed |
Возвращает заданное количество байтов семян. |
protected SecureRandomParameters |
engineGetParameters() |
Возвращает эффективный SecureRandomParameters для этого экземпляра SecureRandom. |
protected abstract void |
engineNextBytes |
Генерирует указанное количество случайных байтов. |
protected void |
engineNextBytes |
Генерирует указанное количество случайных байтов с дополнительными параметрами. |
protected void |
engineReseed |
Переинициализирует этот объект генератора случайных чисел с вводом энтропии, считанным из его источника энтропии, с дополнительными параметрами. |
protected abstract void |
engineSetSeed |
Переинициализирует этот объект генератора случайных чисел с заданным семеном. |
String |
toString() |
Возвращает строковое представление этого объекта SecureRandom, читаемое человеком. |
Подробное описание конструкторов
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
© 1993, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/security/SecureRandomSpi.html