Spec-Zone.ru › OpenJDK 27

Класс SecureRandom

java.lang.Object
java.util.Random
java.security.SecureRandom
Все реализованные интерфейсы:
Serializable, RandomGenerator
public class SecureRandom extends Random
Этот класс предоставляет криптографически стойкий генератор случайных чисел (RNG).

Криптографически стойное случайное число как минимум соответствует требованиям статистических тестов генераторов случайных чисел, указанным в FIPS 140-2, Требования безопасности к криптографическим модулям, раздел 4.9.1. Кроме того, SecureRandom должен выдавать недетерминированные результаты. Поэтому любые начальные данные, передаваемые объекту SecureRandom, должны быть непредсказуемыми, а все последовательности выходных данных SecureRandom должны быть криптографически стойкими, как описано в RFC 4086: Требования к случайности для обеспечения безопасности.

Многие реализации SecureRandom представляют собой генераторы псевдослучайных чисел (PRNG, также известные как генераторы детерминированных случайных битов или DRBG), то есть используют детерминированный алгоритм для создания псевдослучайной последовательности из случайного начального значения. Другие реализации могут генерировать истинно случайные числа, а некоторые используют сочетание обоих методов.

Вызывающий код получает экземпляр SecureRandom с помощью конструктора без аргументов или одного из методов getInstance. Например:

SecureRandom r1 = new SecureRandom();
SecureRandom r2 = SecureRandom.getInstance("NativePRNG");
SecureRandom r3 = SecureRandom.getInstance("DRBG",
        DrbgParameters.instantiation(128, RESEED_ONLY, null));

Третья приведённая выше инструкция возвращает объект SecureRandom указанного алгоритма, поддерживающий заданные параметры инициализации. Эффективные параметры инициализации реализации должны соответствовать этому минимальному запросу, но не обязательно совпадать с ним. Например, даже если запрос не требует определённой возможности, фактическая инициализация может её предоставить. Реализация может отложить инициализацию SecureRandom до момента его фактического использования, однако эффективные параметры инициализации должны быть определены сразу после его создания, а getParameters() всегда должен возвращать неизменный результат.

Обычно вызывающий код SecureRandom вызывает следующие методы для получения случайных байтов:

SecureRandom random = new SecureRandom();
byte[] bytes = new byte[20];
random.nextBytes(bytes);

Вызывающий код также может вызвать метод generateSeed(int) для генерации заданного количества байтов начального значения (например, для инициализации других генераторов случайных чисел):

byte[] seed = random.generateSeed(20);

Только что созданный объект PRNG SecureRandom не инициализирован (кроме случаев, когда он создан с помощью SecureRandom(byte[])). Первый вызов nextBytes приведёт к его инициализации из источника энтропии, зависящего от реализации. Такая автоматическая инициализация не выполняется, если ранее был вызван setSeed.

SecureRandom можно повторно инициализировать в любое время, вызвав метод reseed или setSeed. Метод reseed считывает данные энтропии из своего источника и повторно инициализирует объект. Для метода setSeed вызывающий код должен предоставить начальное значение.

Обратите внимание, что reseed может поддерживаться не всеми реализациями SecureRandom.

Некоторые реализации SecureRandom могут принимать параметр SecureRandomParameters в методах nextBytes(byte[], SecureRandomParameters) и reseed(SecureRandomParameters) для дополнительного управления поведением этих методов.

Примечание. В зависимости от реализации методы generateSeed, reseed и nextBytes могут блокировать выполнение во время сбора энтропии, например, если в различных Unix-подобных операционных системах источником энтропии является /dev/random.

Потокобезопасность

Объекты SecureRandom безопасны для использования несколькими параллельно работающими потоками.
Требования к реализации:
Поставщик службы SecureRandom может объявить о потокобезопасности, задав атрибут поставщика службы "ThreadSafe" в значение "true" при регистрации поставщика. В противном случае этот класс будет синхронизировать доступ к следующим методам реализации SecureRandomSpi:
  • SecureRandomSpi.engineSetSeed(byte[])
  • SecureRandomSpi.engineNextBytes(byte[])
  • SecureRandomSpi.engineNextBytes(byte[], SecureRandomParameters)
  • SecureRandomSpi.engineGenerateSeed(int)
  • SecureRandomSpi.engineReseed(SecureRandomParameters)
Начиная с версии:
1.1
Внешние спецификации
  • RFC 4086: Требования к случайности для обеспечения безопасности
  • Требования безопасности к криптографическим модулям
  • Стандартные имена алгоритмов безопасности Java
См. также:
  • SecureRandomSpi
  • Random
  • Сериализованная форма

Краткое описание вложенных классов

Вложенные классы/интерфейсы, объявленные в интерфейсе RandomGenerator

RandomGenerator.ArbitrarilyJumpableGenerator, RandomGenerator.JumpableGenerator, RandomGenerator.LeapableGenerator, RandomGenerator.SplittableGenerator, RandomGenerator.StreamableGenerator
Модификатор и тип Интерфейс Описание
static interface  RandomGenerator.ArbitrarilyJumpableGenerator
Этот интерфейс предназначен для предоставления общего протокола объектам, которые генерируют последовательности псевдослучайных значений и могут легко перепрыгивать вперёд на произвольное расстояние до удалённой точки в цикле состояний.
static interface  RandomGenerator.JumpableGenerator
Этот интерфейс предназначен для предоставления общего протокола объектам, которые генерируют псевдослучайные значения и могут легко перепрыгивать вперёд на умеренное расстояние (например, 264) до удалённой точки в цикле состояний.
static interface  RandomGenerator.LeapableGenerator
Этот интерфейс предназначен для предоставления общего протокола объектам, которые генерируют последовательности псевдослучайных значений и могут не только перепрыгивать, но и перемещаться скачком вперёд на большое расстояние (например, 2128) до очень удалённой точки в цикле состояний.
static interface  RandomGenerator.SplittableGenerator
Этот интерфейс предназначен для предоставления общего протокола объектам, которые генерируют последовательности псевдослучайных значений и могут быть разделены на два объекта (исходный и новый), каждый из которых соблюдает тот же протокол (и поэтому может рекурсивно разделяться неограниченное количество раз).
static interface  RandomGenerator.StreamableGenerator
Интерфейс RandomGenerator.StreamableGenerator расширяет интерфейс RandomGenerator, добавляя методы, возвращающие потоки объектов RandomGenerator.

Краткое описание конструкторов

SecureRandom()
SecureRandom(byte[] seed)
SecureRandom(SecureRandomSpi secureRandomSpi, Provider provider)
Модификатор Конструктор Описание
Создаёт криптографически стойкий генератор случайных чисел (RNG), реализующий алгоритм генерации случайных чисел по умолчанию.
Создаёт криптографически стойкий генератор случайных чисел (RNG), реализующий алгоритм генерации случайных чисел по умолчанию.
protected
Создаёт объект SecureRandom.

Краткое описание методов

Модификатор и тип Метод Описание
byte[] generateSeed(int numBytes)
Возвращает заданное количество байтов начального значения, вычисленных с помощью алгоритма генерации начального значения, который этот класс использует для собственной инициализации.
String getAlgorithm()
Возвращает имя алгоритма, реализованного этим объектом SecureRandom.
static SecureRandom getInstance(String algorithm)
Возвращает объект SecureRandom, реализующий указанный алгоритм генератора случайных чисел (RNG).
static SecureRandom getInstance(String algorithm, String provider)
Возвращает объект SecureRandom, реализующий указанный алгоритм генератора случайных чисел (RNG).
static SecureRandom getInstance(String algorithm, Provider provider)
Возвращает объект SecureRandom, реализующий указанный алгоритм генератора случайных чисел (RNG).
static SecureRandom getInstance(String algorithm, SecureRandomParameters params)
Возвращает объект SecureRandom, реализующий указанный алгоритм генератора случайных чисел (RNG) и поддерживающий указанный запрос SecureRandomParameters.
static SecureRandom getInstance(String algorithm, SecureRandomParameters params, String provider)
Возвращает объект SecureRandom, реализующий указанный алгоритм генератора случайных чисел (RNG) и поддерживающий указанный запрос SecureRandomParameters.
static SecureRandom getInstance(String algorithm, SecureRandomParameters params, Provider provider)
Возвращает объект SecureRandom, реализующий указанный алгоритм генератора случайных чисел (RNG) и поддерживающий указанный запрос SecureRandomParameters.
static SecureRandom getInstanceStrong()
Возвращает объект SecureRandom, выбранный с использованием алгоритмов/поставщиков, указанных в свойстве Security securerandom.strongAlgorithms.
SecureRandomParameters getParameters()
Возвращает эффективные SecureRandomParameters для этого экземпляра SecureRandom.
final Provider getProvider()
Возвращает поставщика этого объекта SecureRandom.
static byte[] getSeed(int numBytes)
Возвращает заданное количество байтов начального значения, вычисленных с помощью алгоритма генерации начального значения, который этот класс использует для собственной инициализации.
protected final int next(int numBits)
Генерирует целое число, содержащее указанное пользователем количество псевдослучайных битов (с выравниванием по правому краю и ведущими нулями).
void nextBytes(byte[] bytes)
Генерирует указанное пользователем количество случайных байтов.
void nextBytes(byte[] bytes, SecureRandomParameters params)
Генерирует указанное пользователем количество случайных байтов с дополнительными параметрами.
void reseed()
Повторно инициализирует этот объект SecureRandom данными энтропии, считанными из его источника энтропии.
void reseed(SecureRandomParameters params)
Повторно инициализирует этот объект SecureRandom данными энтропии, считанными из его источника энтропии, с дополнительными параметрами.
void setSeed(byte[] seed)
Повторно инициализирует этот объект генератора случайных чисел заданным начальным значением.
void setSeed(long seed)
Повторно инициализирует этот объект генератора случайных чисел, используя восемь байтов, содержащихся в заданном long seed.
String toString()
Возвращает человекочитаемое строковое представление этого объекта SecureRandom.

Методы, объявленные в классе Random

doubles, doubles, doubles, doubles, from, ints, ints, ints, ints, longs, longs, longs, longs, nextBoolean, nextDouble, nextFloat, nextGaussian, nextInt, nextInt, nextLong
Модификатор и тип Метод Описание
DoubleStream doubles()
Возвращает практически неограниченный поток псевдослучайных значений double, каждое из которых находится в диапазоне от нуля (включительно) до единицы (не включительно).
DoubleStream doubles(double randomNumberOrigin, double randomNumberBound)
Возвращает практически неограниченный поток псевдослучайных значений double, каждое из которых соответствует заданной нижней границе (включительно) и верхней границе (не включительно).
DoubleStream doubles(long streamSize)
Возвращает поток, генерирующий заданное количество streamSize псевдослучайных значений double, каждое из которых находится в диапазоне от нуля (включительно) до единицы (не включительно).
DoubleStream doubles(long streamSize, double randomNumberOrigin, double randomNumberBound)
Возвращает поток, генерирующий заданное количество streamSize псевдослучайных значений double, каждое из которых соответствует заданной нижней границе (включительно) и верхней границе (не включительно).
static Random from(RandomGenerator generator)
Возвращает экземпляр Random, который делегирует вызовы методов аргументу RandomGenerator.
IntStream ints()
Возвращает практически неограниченный поток псевдослучайных значений int.
IntStream ints(int randomNumberOrigin, int randomNumberBound)
Возвращает практически неограниченный поток псевдослучайных значений int, каждое из которых соответствует заданной нижней границе (включительно) и верхней границе (не включительно).
IntStream ints(long streamSize)
Возвращает поток, генерирующий заданное количество streamSize псевдослучайных значений int.
IntStream ints(long streamSize, int randomNumberOrigin, int randomNumberBound)
Возвращает поток, генерирующий заданное количество streamSize псевдослучайных значений int, каждое из которых соответствует заданной нижней границе (включительно) и верхней границе (не включительно).
LongStream longs()
Возвращает практически неограниченный поток псевдослучайных значений long.
LongStream longs(long streamSize)
Возвращает поток, генерирующий заданное количество streamSize псевдослучайных значений long.
LongStream longs(long randomNumberOrigin, long randomNumberBound)
Возвращает практически неограниченный поток псевдослучайных значений long, каждое из которых соответствует заданной нижней границе (включительно) и верхней границе (не включительно).
LongStream longs(long streamSize, long randomNumberOrigin, long randomNumberBound)
Возвращает поток, генерирующий заданное количество streamSize псевдослучайных значений long, каждое из которых соответствует заданной нижней границе (включительно) и верхней границе (не включительно).
boolean nextBoolean()
Возвращает следующее псевдослучайное равномерно распределённое значение boolean из последовательности этого генератора случайных чисел.
double nextDouble()
Возвращает следующее псевдослучайное равномерно распределённое значение double из последовательности этого генератора случайных чисел в диапазоне от 0.0 до 1.0.
float nextFloat()
Возвращает следующее псевдослучайное равномерно распределённое значение float из последовательности этого генератора случайных чисел в диапазоне от 0.0 до 1.0.
double nextGaussian()
Возвращает следующее псевдослучайное значение double с распределением Гаусса («нормальным»), средним значением 0.0 и стандартным отклонением 1.0 из последовательности этого генератора случайных чисел.
int nextInt()
Возвращает следующее псевдослучайное равномерно распределённое значение int из последовательности этого генератора случайных чисел.
int nextInt(int bound)
Возвращает псевдослучайное равномерно распределённое значение int из последовательности этого генератора случайных чисел в диапазоне от 0 (включительно) до заданного значения (не включительно).
long nextLong()
Возвращает следующее псевдослучайное равномерно распределённое значение long из последовательности этого генератора случайных чисел.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли какой-либо другой объект этому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии.
Финализация устарела и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого объекта Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени.

Методы, объявленные в интерфейсе RandomGenerator

equiDoubles, isDeprecated, nextDouble, nextDouble, nextExponential, nextFloat, nextFloat, nextGaussian, nextInt, nextLong, nextLong
Модификатор и тип Метод Описание
default DoubleStream equiDoubles(double left, double right, boolean isLeftIncluded, boolean isRightIncluded)
Возвращает практически неограниченный поток псевдослучайно выбранных значений double, каждое из которых находится между указанной границей left и указанной границей right.
default boolean isDeprecated()
Возвращает true, если реализация RandomGenerator (алгоритм) помечена как устаревшая.
default double nextDouble(double bound)
Возвращает псевдослучайно выбранное значение double в диапазоне от нуля (включительно) до заданной верхней границы (не включительно).
default double nextDouble(double origin, double bound)
Возвращает псевдослучайно выбранное значение double в диапазоне от заданной нижней границы (включительно) до заданной верхней границы (не включительно).
default double nextExponential()
Возвращает неотрицательное значение double, псевдослучайно выбранное из экспоненциального распределения со средним значением 1.
default float nextFloat(float bound)
Возвращает псевдослучайно выбранное значение float в диапазоне от нуля (включительно) до заданной верхней границы (не включительно).
default float nextFloat(float origin, float bound)
Возвращает псевдослучайно выбранное значение float в диапазоне от заданной нижней границы (включительно) до заданной верхней границы (не включительно).
default double nextGaussian(double mean, double stddev)
Возвращает значение double, псевдослучайно выбранное из распределения Гаусса (нормального распределения) со средним значением и стандартным отклонением, заданными аргументами.
default int nextInt(int origin, int bound)
Возвращает псевдослучайно выбранное значение int в диапазоне от заданной нижней границы (включительно) до заданной верхней границы (не включительно).
default long nextLong(long bound)
Возвращает псевдослучайно выбранное значение long в диапазоне от нуля (включительно) до заданной верхней границы (не включительно).
default long nextLong(long origin, long bound)
Возвращает псевдослучайно выбранное значение long в диапазоне от заданной нижней границы (включительно) до заданной верхней границы (не включительно).

Подробное описание конструкторов

SecureRandom

public SecureRandom()
Создает генератор криптографически стойких случайных чисел (ГСЧ), реализующий алгоритм генерации случайных чисел по умолчанию.

Этот конструктор перебирает список зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного. Возвращается новый объект SecureRandom, инкапсулирующий реализацию SecureRandomSpi от первого поставщика, поддерживающего алгоритм SecureRandom (ГСЧ). Если ни один из поставщиков не поддерживает алгоритм ГСЧ, возвращается реализация, заданная по умолчанию для конкретной реализации.

Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().

Информацию о стандартных именах алгоритмов ГСЧ см. в разделе SecureRandom спецификации Стандартные имена алгоритмов Java Security.

Внешние спецификации
  • Стандартные имена алгоритмов Java Security

SecureRandom

public SecureRandom(byte[] seed)
Создает генератор криптографически стойких случайных чисел (ГСЧ), реализующий алгоритм генерации случайных чисел по умолчанию. Экземпляр SecureRandom инициализируется указанными байтами начального значения.

Этот конструктор перебирает список зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного. Возвращается новый объект SecureRandom, инкапсулирующий реализацию SecureRandomSpi от первого поставщика, поддерживающего алгоритм SecureRandom (ГСЧ). Если ни один из поставщиков не поддерживает алгоритм ГСЧ, возвращается реализация, заданная по умолчанию для конкретной реализации.

Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().

Информацию о стандартных именах алгоритмов ГСЧ см. в разделе SecureRandom спецификации Стандартные имена алгоритмов Java Security.

Параметры:
seed — начальное значение.
Исключения:
NullPointerException — если seed равно null
Внешние спецификации
  • Стандартные имена алгоритмов Java Security

SecureRandom

protected SecureRandom(SecureRandomSpi secureRandomSpi, Provider provider)
Создает объект SecureRandom.
Параметры:
secureRandomSpi — реализация SecureRandom.
provider — поставщик.

Подробное описание методов

getInstance

public static SecureRandom getInstance(String algorithm) throws NoSuchAlgorithmException
Возвращает объект SecureRandom, реализующий указанный алгоритм генерации случайных чисел (ГСЧ).

Этот метод перебирает список зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного. Возвращается новый объект SecureRandom, инкапсулирующий реализацию SecureRandomSpi от первого поставщика, поддерживающего указанный алгоритм.

Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().

Примечание по реализации:
Реализация JDK Reference Implementation дополнительно использует свойство jdk.security.provider.preferred Security для определения предпочтительного порядка поставщиков для указанного алгоритма. Этот порядок может отличаться от порядка поставщиков, возвращаемого методом Security.getProviders().
Параметры:
algorithm — имя алгоритма ГСЧ. Информацию о стандартных именах алгоритмов ГСЧ см. в разделе SecureRandom спецификации Стандартные имена алгоритмов Java Security.
Возвращает:
новый объект SecureRandom
Исключения:
NoSuchAlgorithmException — если ни один Provider не поддерживает реализацию SecureRandomSpi для указанного алгоритма
NullPointerException — если algorithm равно null
Начиная с версии:
1.2
Внешние спецификации
  • Стандартные имена алгоритмов Java Security
См. также:
  • Provider

getInstance

public static SecureRandom getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
Возвращает объект SecureRandom, реализующий указанный алгоритм генерации случайных чисел (ГСЧ).

Возвращается новый объект SecureRandom, инкапсулирующий реализацию SecureRandomSpi от указанного поставщика. Указанный поставщик должен быть зарегистрирован в списке поставщиков безопасности.

Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().

Параметры:
algorithm — имя алгоритма ГСЧ. Информацию о стандартных именах алгоритмов ГСЧ см. в разделе SecureRandom спецификации Стандартные имена алгоритмов Java Security.
provider — имя поставщика.
Возвращает:
новый объект SecureRandom
Исключения:
IllegalArgumentException — если имя поставщика равно null или пусто
NoSuchAlgorithmException — если у указанного поставщика отсутствует реализация SecureRandomSpi для указанного алгоритма
NoSuchProviderException — если указанный поставщик не зарегистрирован в списке поставщиков безопасности
NullPointerException — если algorithm равно null
Начиная с версии:
1.2
Внешние спецификации
  • Стандартные имена алгоритмов Java Security
См. также:
  • Provider

getInstance

public static SecureRandom getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
Возвращает объект SecureRandom, реализующий указанный алгоритм генерации случайных чисел (ГСЧ).

Возвращается новый объект SecureRandom, инкапсулирующий реализацию SecureRandomSpi от указанного поставщика. Обратите внимание, что указанный поставщик не обязательно должен быть зарегистрирован в списке поставщиков.

Параметры:
algorithm — имя алгоритма ГСЧ. Информацию о стандартных именах алгоритмов ГСЧ см. в разделе SecureRandom спецификации Стандартные имена алгоритмов Java Security.
provider — поставщик.
Возвращает:
новый объект SecureRandom
Исключения:
IllegalArgumentException — если указанный поставщик равен null
NoSuchAlgorithmException — если у указанного объекта Provider отсутствует реализация SecureRandomSpi для указанного алгоритма
NullPointerException — если algorithm равно null
Начиная с версии:
1.4
Внешние спецификации
  • Стандартные имена алгоритмов Java Security
См. также:
  • Provider

getInstance

public static SecureRandom getInstance(String algorithm, SecureRandomParameters params) throws NoSuchAlgorithmException
Возвращает объект SecureRandom, реализующий указанный алгоритм генерации случайных чисел (ГСЧ) и поддерживающий запрос SecureRandomParameters.

Этот метод перебирает список зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного. Возвращается новый объект SecureRandom, инкапсулирующий реализацию SecureRandomSpi от первого поставщика, поддерживающего указанный алгоритм и указанное значение SecureRandomParameters.

Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().

Примечание по реализации:
Реализация JDK Reference Implementation дополнительно использует свойство jdk.security.provider.preferred для определения предпочтительного порядка поставщиков для указанного алгоритма. Этот порядок может отличаться от порядка поставщиков, возвращаемого методом Security.getProviders().
Параметры:
algorithm — имя алгоритма ГСЧ. Информацию о стандартных именах алгоритмов ГСЧ см. в разделе SecureRandom спецификации Стандартные имена алгоритмов Java Security.
params — параметры SecureRandomParameters, которые должен поддерживать вновь созданный объект SecureRandom.
Возвращает:
новый объект SecureRandom
Исключения:
IllegalArgumentException — если указанный параметр равен null
NoSuchAlgorithmException — если ни один поставщик не поддерживает реализацию SecureRandomSpi для указанного алгоритма и параметров
NullPointerException — если algorithm равно null
Начиная с версии:
9
Внешние спецификации
  • Стандартные имена алгоритмов Java Security
См. также:
  • Provider

getInstance

public static SecureRandom getInstance(String algorithm, SecureRandomParameters params, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
Возвращает объект SecureRandom, реализующий указанный алгоритм генерации случайных чисел (ГСЧ) и поддерживающий запрос SecureRandomParameters.

Возвращается новый объект SecureRandom, инкапсулирующий реализацию SecureRandomSpi от указанного поставщика. Указанный поставщик должен быть зарегистрирован в списке поставщиков безопасности.

Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().

Параметры:
algorithm — имя алгоритма ГСЧ. Информацию о стандартных именах алгоритмов ГСЧ см. в разделе SecureRandom спецификации Стандартные имена алгоритмов Java Security.
params — параметры SecureRandomParameters, которые должен поддерживать вновь созданный объект SecureRandom.
provider — имя поставщика.
Возвращает:
новый объект SecureRandom
Исключения:
IllegalArgumentException — если имя поставщика равно null или пусто либо params равно null
NoSuchAlgorithmException — если указанный поставщик не поддерживает реализацию SecureRandomSpi для указанного алгоритма и параметров
NoSuchProviderException — если указанный поставщик не зарегистрирован в списке поставщиков безопасности
NullPointerException — если algorithm равно null
Начиная с версии:
9
Внешние спецификации
  • Стандартные имена алгоритмов Java Security
См. также:
  • Provider

getInstance

public static SecureRandom getInstance(String algorithm, SecureRandomParameters params, Provider provider) throws NoSuchAlgorithmException
Возвращает объект SecureRandom, реализующий указанный алгоритм генерации случайных чисел (ГСЧ) и поддерживающий запрос SecureRandomParameters.

Возвращается новый объект SecureRandom, инкапсулирующий реализацию SecureRandomSpi от указанного поставщика. Обратите внимание, что указанный поставщик не обязательно должен быть зарегистрирован в списке поставщиков.

Параметры:
algorithm — имя алгоритма ГСЧ. Информацию о стандартных именах алгоритмов ГСЧ см. в разделе SecureRandom спецификации Стандартные имена алгоритмов Java Security.
params — параметры SecureRandomParameters, которые должен поддерживать вновь созданный объект SecureRandom.
provider — поставщик.
Возвращает:
новый объект SecureRandom
Исключения:
IllegalArgumentException — если указанный поставщик или params равен null
NoSuchAlgorithmException — если указанный поставщик не поддерживает реализацию SecureRandomSpi для указанного алгоритма и параметров
NullPointerException — если algorithm равно null
Начиная с версии:
9
Внешние спецификации
  • Стандартные имена алгоритмов Java Security
См. также:
  • Provider

getProvider

public final Provider getProvider()
Возвращает поставщика этого объекта SecureRandom.
Возвращает:
поставщика этого объекта SecureRandom.

getAlgorithm

public String getAlgorithm()
Возвращает имя алгоритма, реализованного этим объектом SecureRandom.
Возвращает:
имя алгоритма или unknown, если имя алгоритма определить невозможно.
Начиная с версии:
1.5

toString

public String toString()
Возвращает понятное человеку строковое представление этого объекта SecureRandom.
Переопределяет:
toString в классе Object
Возвращает:
строковое представление

getParameters

public SecureRandomParameters getParameters()
Возвращает эффективные параметры SecureRandomParameters для этого экземпляра SecureRandom.

Возвращаемое значение может отличаться от объекта SecureRandomParameters, переданного методу getInstance, но не может изменяться в течение срока существования этого объекта SecureRandom.

Вызывающий код может использовать возвращаемое значение, чтобы узнать, какие возможности поддерживает этот SecureRandom.

Возвращает:
эффективные параметры SecureRandomParameters или null, если параметры не использовались.
Начиная с версии:
9
См. также:
  • SecureRandomSpi

setSeed

public void setSeed(byte[] seed)
Повторно инициализирует этот объект генератора случайных чисел указанным начальным значением. Начальное значение дополняет, а не заменяет существующее. Таким образом, гарантируется, что повторные вызовы никогда не снизят случайность.

Генератор псевдослучайных чисел SecureRandom не будет инициализироваться автоматически, если setSeed вызывается до любых вызовов nextBytes или reseed. Вызывающий код должен убедиться, что аргумент seed содержит достаточно энтропии для обеспечения безопасности этого SecureRandom.

Параметры:
seed — начальное значение.
Исключения:
NullPointerException — если seed равно null
См. также:
  • getSeed(int)

setSeed

public void setSeed(long seed)
Повторно инициализирует этот объект генератора случайных чисел, используя восемь байтов, содержащихся в указанном long seed. Указанное начальное значение дополняет, а не заменяет существующее. Таким образом, гарантируется, что повторные вызовы никогда не снизят случайность.

Генератор псевдослучайных чисел SecureRandom не будет инициализироваться автоматически, если setSeed вызывается до любых вызовов nextBytes или reseed. Вызывающий код должен убедиться, что аргумент seed содержит достаточно энтропии для обеспечения безопасности этого SecureRandom.

Этот метод определен для совместимости с java.util.Random.

Переопределяет:
setSeed в классе Random
Параметры:
seed — начальное значение.
См. также:
  • getSeed(int)

nextBytes

public void nextBytes(byte[] bytes)
Генерирует указанное пользователем количество случайных байтов.
Определено в:
nextBytes в интерфейсе RandomGenerator
Переопределяет:
nextBytes в классе Random
Параметры:
bytes — массив для заполнения случайными байтами.
Исключения:
NullPointerException — если bytes равно null

nextBytes

public void nextBytes(byte[] bytes, SecureRandomParameters params)
Генерирует указанное пользователем количество случайных байтов с дополнительными параметрами.
Параметры:
bytes — массив для заполнения случайными байтами
params — дополнительные параметры
Исключения:
NullPointerException — если bytes равно null
UnsupportedOperationException — если нижележащая реализация поставщика не переопределила этот метод
IllegalArgumentException — если params равно null, является недопустимым или не поддерживается этим SecureRandom
Начиная с версии:
9

next

protected final int next(int numBits)
Генерирует целое число, содержащее указанное пользователем количество псевдослучайных битов (выравнивание по правому краю, с ведущими нулями). Этот метод переопределяет метод java.util.Random и служит источником случайных битов для всех методов, унаследованных от этого класса (например, nextInt, nextLong и nextFloat).
Переопределяет:
next в классе Random
Параметры:
numBits — количество генерируемых псевдослучайных битов, где 0 <= numBits <= 32.
Возвращает:
объект int, содержащий указанное пользователем количество псевдослучайных битов (выравнивание по правому краю, с ведущими нулями).

getSeed

public static byte[] getSeed(int numBytes)
Возвращает указанное количество байтов начального значения, вычисленных с помощью алгоритма генерации начального значения, который этот класс использует для собственной инициализации. Этот вызов можно использовать для инициализации других генераторов случайных чисел.

Этот метод включен только для обратной совместимости. Рекомендуется использовать один из альтернативных методов getInstance для получения объекта SecureRandom, а затем вызвать метод generateSeed, чтобы получить байты начального значения из этого объекта.

Параметры:
numBytes — количество байтов начального значения для генерации.
Возвращает:
байты начального значения.
Исключения:
IllegalArgumentException — если numBytes отрицательно
См. также:
  • setSeed(byte[])

generateSeed

public byte[] generateSeed(int numBytes)
Возвращает указанное количество байтов начального значения, вычисленных с помощью алгоритма генерации начального значения, который этот класс использует для собственной инициализации. Этот вызов можно использовать для инициализации других генераторов случайных чисел.
Параметры:
numBytes — количество байтов начального значения для генерации.
Возвращает:
байты начального значения.
Исключения:
IllegalArgumentException — если numBytes отрицательно

getInstanceStrong

public static SecureRandom getInstanceStrong() throws NoSuchAlgorithmException
Возвращает объект SecureRandom, выбранный с использованием алгоритмов и поставщиков, указанных в свойстве securerandom.strongAlgorithms Security.

В некоторых ситуациях требуются криптографически стойкие случайные значения, например при создании важных секретов с длительным сроком действия, таких как открытые и закрытые ключи RSA. Чтобы помочь приложениям выбрать подходящую криптографически стойкую реализацию SecureRandom, дистрибутивы Java содержат список известных криптографически стойких реализаций SecureRandom в свойстве безопасности securerandom.strongAlgorithms.

Каждая реализация платформы Java должна поддерживать как минимум одну криптографически стойкую реализацию SecureRandom.

Возвращает:
криптографически стойкая реализация SecureRandom, указанная свойством безопасности securerandom.strongAlgorithms
Исключения:
NoSuchAlgorithmException — если алгоритм недоступен
Начиная с версии:
1.8
См. также:
  • Security.getProperty(String)

reseed

public void reseed()
Повторно инициализирует этот SecureRandom энтропией, полученной из его источника энтропии.
Исключения:
UnsupportedOperationException — если нижележащая реализация поставщика не переопределила этот метод.
Начиная с версии:
9

reseed

public void reseed(SecureRandomParameters params)
Повторно инициализирует этот SecureRandom энтропией, полученной из его источника энтропии, с дополнительными параметрами.

Обратите внимание, что энтропия поступает из источника энтропии. Хотя некоторые данные в params могут содержать энтропию, основное их назначение — обеспечить разнообразие.

Параметры:
params — дополнительные параметры
Исключения:
UnsupportedOperationException — если нижележащая реализация поставщика не переопределила этот метод.
IllegalArgumentException — если params равно null, является недопустимым или не поддерживается этим SecureRandom
Начиная с версии:
9

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, включая концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или ее аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API