Класс SecureRandom
- Все реализованные интерфейсы:
Serializable, RandomGenerator
public class SecureRandom extends Random
Криптографически стойное случайное число как минимум соответствует требованиям статистических тестов генераторов случайных чисел, указанным в 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: - Начиная с версии:
- 1.1
- Внешние спецификации
- См. также:
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в интерфейсе 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. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
| Создаёт криптографически стойкий генератор случайных чисел (RNG), реализующий алгоритм генерации случайных чисел по умолчанию. |
||
| Создаёт криптографически стойкий генератор случайных чисел (RNG), реализующий алгоритм генерации случайных чисел по умолчанию. |
||
protected |
Создаёт объект SecureRandom. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
byte[] |
generateSeed |
Возвращает заданное количество байтов начального значения, вычисленных с помощью алгоритма генерации начального значения, который этот класс использует для собственной инициализации. |
String |
getAlgorithm() |
Возвращает имя алгоритма, реализованного этим объектом SecureRandom. |
static SecureRandom |
getInstance |
Возвращает объект SecureRandom, реализующий указанный алгоритм генератора случайных чисел (RNG). |
static SecureRandom |
getInstance |
Возвращает объект SecureRandom, реализующий указанный алгоритм генератора случайных чисел (RNG). |
static SecureRandom |
getInstance |
Возвращает объект SecureRandom, реализующий указанный алгоритм генератора случайных чисел (RNG). |
static SecureRandom |
getInstance |
Возвращает объект SecureRandom, реализующий указанный алгоритм генератора случайных чисел (RNG) и поддерживающий указанный запрос SecureRandomParameters. |
static SecureRandom |
getInstance |
Возвращает объект SecureRandom, реализующий указанный алгоритм генератора случайных чисел (RNG) и поддерживающий указанный запрос SecureRandomParameters. |
static SecureRandom |
getInstance |
Возвращает объект SecureRandom, реализующий указанный алгоритм генератора случайных чисел (RNG) и поддерживающий указанный запрос SecureRandomParameters. |
static SecureRandom |
getInstanceStrong() |
Возвращает объект SecureRandom, выбранный с использованием алгоритмов/поставщиков, указанных в свойстве Security
securerandom.strongAlgorithms. |
SecureRandomParameters |
getParameters() |
Возвращает эффективные SecureRandomParameters для этого экземпляра SecureRandom. |
final Provider |
getProvider() |
Возвращает поставщика этого объекта SecureRandom. |
static byte[] |
getSeed |
Возвращает заданное количество байтов начального значения, вычисленных с помощью алгоритма генерации начального значения, который этот класс использует для собственной инициализации. |
protected final int |
next |
Генерирует целое число, содержащее указанное пользователем количество псевдослучайных битов (с выравниванием по правому краю и ведущими нулями). |
void |
nextBytes |
Генерирует указанное пользователем количество случайных байтов. |
void |
nextBytes |
Генерирует указанное пользователем количество случайных байтов с дополнительными параметрами. |
void |
reseed() |
Повторно инициализирует этот объект SecureRandom данными энтропии, считанными из его источника энтропии. |
void |
reseed |
Повторно инициализирует этот объект SecureRandom данными энтропии, считанными из его источника энтропии, с дополнительными параметрами. |
void |
setSeed |
Повторно инициализирует этот объект генератора случайных чисел заданным начальным значением. |
void |
setSeed |
Повторно инициализирует этот объект генератора случайных чисел, используя восемь байтов, содержащихся в заданном 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, каждое из которых соответствует заданной нижней границе (включительно) и верхней границе (не включительно). |
DoubleStream |
doubles |
Возвращает поток, генерирующий заданное количество streamSize псевдослучайных значений double, каждое из которых находится в диапазоне от нуля (включительно) до единицы (не включительно). |
DoubleStream |
doubles |
Возвращает поток, генерирующий заданное количество streamSize псевдослучайных значений double, каждое из которых соответствует заданной нижней границе (включительно) и верхней границе (не включительно). |
static Random |
from |
Возвращает экземпляр Random, который делегирует вызовы методов аргументу RandomGenerator. |
IntStream |
ints() |
Возвращает практически неограниченный поток псевдослучайных значений int. |
IntStream |
ints |
Возвращает практически неограниченный поток псевдослучайных значений
int, каждое из которых соответствует заданной нижней границе (включительно) и верхней границе (не включительно). |
IntStream |
ints |
Возвращает поток, генерирующий заданное количество streamSize псевдослучайных значений int. |
IntStream |
ints |
Возвращает поток, генерирующий заданное количество streamSize псевдослучайных значений int, каждое из которых соответствует заданной нижней границе (включительно) и верхней границе (не включительно). |
LongStream |
longs() |
Возвращает практически неограниченный поток псевдослучайных значений long. |
LongStream |
longs |
Возвращает поток, генерирующий заданное количество streamSize псевдослучайных значений long. |
LongStream |
longs |
Возвращает практически неограниченный поток псевдослучайных значений
long, каждое из которых соответствует заданной нижней границе (включительно) и верхней границе (не включительно). |
LongStream |
longs |
Возвращает поток, генерирующий заданное количество 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 из последовательности этого генератора случайных чисел в диапазоне от 0 (включительно) до заданного значения (не включительно). |
long |
nextLong() |
Возвращает следующее псевдослучайное равномерно распределённое значение long из последовательности этого генератора случайных чисел. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли какой-либо другой объект этому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии. Финализация устарела и подлежит удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого объекта Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
Методы, объявленные в интерфейсе RandomGenerator
equiDoubles, isDeprecated, nextDouble, nextDouble, nextExponential, nextFloat, nextFloat, nextGaussian, nextInt, nextLong, nextLong | Модификатор и тип | Метод | Описание |
|---|---|---|
default DoubleStream |
equiDoubles |
Возвращает практически неограниченный поток псевдослучайно выбранных значений double, каждое из которых находится между указанной границей left и указанной границей right. |
default boolean |
isDeprecated() |
Возвращает true, если реализация RandomGenerator (алгоритм) помечена как устаревшая. |
default double |
nextDouble |
Возвращает псевдослучайно выбранное значение double в диапазоне от нуля (включительно) до заданной верхней границы (не включительно). |
default double |
nextDouble |
Возвращает псевдослучайно выбранное значение double в диапазоне от заданной нижней границы (включительно) до заданной верхней границы (не включительно). |
default double |
nextExponential() |
Возвращает неотрицательное значение double, псевдослучайно выбранное из экспоненциального распределения со средним значением 1. |
default float |
nextFloat |
Возвращает псевдослучайно выбранное значение float в диапазоне от нуля (включительно) до заданной верхней границы (не включительно). |
default float |
nextFloat |
Возвращает псевдослучайно выбранное значение float в диапазоне от заданной нижней границы (включительно) до заданной верхней границы (не включительно). |
default double |
nextGaussian |
Возвращает значение double, псевдослучайно выбранное из распределения Гаусса (нормального распределения) со средним значением и стандартным отклонением, заданными аргументами. |
default int |
nextInt |
Возвращает псевдослучайно выбранное значение int в диапазоне от заданной нижней границы (включительно) до заданной верхней границы (не включительно). |
default long |
nextLong |
Возвращает псевдослучайно выбранное значение long в диапазоне от нуля (включительно) до заданной верхней границы (не включительно). |
default long |
nextLong |
Возвращает псевдослучайно выбранное значение long в диапазоне от заданной нижней границы (включительно) до заданной верхней границы (не включительно). |
Подробное описание конструкторов
SecureRandom
public SecureRandom()
Этот конструктор перебирает список зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного. Возвращается новый объект SecureRandom, инкапсулирующий реализацию SecureRandomSpi от первого поставщика, поддерживающего алгоритм SecureRandom (ГСЧ). Если ни один из поставщиков не поддерживает алгоритм ГСЧ, возвращается реализация, заданная по умолчанию для конкретной реализации.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
Информацию о стандартных именах алгоритмов ГСЧ см. в разделе SecureRandom спецификации Стандартные имена алгоритмов Java Security.
- Внешние спецификации
SecureRandom
public SecureRandom(byte[] seed)
SecureRandom инициализируется указанными байтами начального значения. Этот конструктор перебирает список зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного. Возвращается новый объект SecureRandom, инкапсулирующий реализацию SecureRandomSpi от первого поставщика, поддерживающего алгоритм SecureRandom (ГСЧ). Если ни один из поставщиков не поддерживает алгоритм ГСЧ, возвращается реализация, заданная по умолчанию для конкретной реализации.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
Информацию о стандартных именах алгоритмов ГСЧ см. в разделе SecureRandom спецификации Стандартные имена алгоритмов Java Security.
- Параметры:
-
seed— начальное значение. - Исключения:
-
NullPointerException— еслиseedравноnull - Внешние спецификации
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.preferredSecurityдля определения предпочтительного порядка поставщиков для указанного алгоритма. Этот порядок может отличаться от порядка поставщиков, возвращаемого методомSecurity.getProviders(). - Параметры:
-
algorithm— имя алгоритма ГСЧ. Информацию о стандартных именах алгоритмов ГСЧ см. в разделеSecureRandomспецификации Стандартные имена алгоритмов Java Security. - Возвращает:
- новый объект
SecureRandom - Исключения:
-
NoSuchAlgorithmException— если ни одинProviderне поддерживает реализациюSecureRandomSpiдля указанного алгоритма -
NullPointerException— еслиalgorithmравноnull - Начиная с версии:
- 1.2
- Внешние спецификации
- См. также:
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
- Внешние спецификации
- См. также:
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
- Внешние спецификации
- См. также:
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
- Внешние спецификации
- См. также:
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
- Внешние спецификации
- См. также:
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
- Внешние спецификации
- См. также:
getProvider
public final Provider getProvider()
SecureRandom.- Возвращает:
- поставщика этого объекта
SecureRandom.
getAlgorithm
public String getAlgorithm()
SecureRandom.- Возвращает:
- имя алгоритма или
unknown, если имя алгоритма определить невозможно. - Начиная с версии:
- 1.5
toString
getParameters
public SecureRandomParameters getParameters()
SecureRandomParameters для этого экземпляра SecureRandom. Возвращаемое значение может отличаться от объекта SecureRandomParameters, переданного методу getInstance, но не может изменяться в течение срока существования этого объекта SecureRandom.
Вызывающий код может использовать возвращаемое значение, чтобы узнать, какие возможности поддерживает этот SecureRandom.
- Возвращает:
- эффективные параметры
SecureRandomParametersилиnull, если параметры не использовались. - Начиная с версии:
- 9
- См. также:
setSeed
public void setSeed(byte[] seed)
Генератор псевдослучайных чисел SecureRandom не будет инициализироваться автоматически, если setSeed вызывается до любых вызовов nextBytes или reseed. Вызывающий код должен убедиться, что аргумент seed содержит достаточно энтропии для обеспечения безопасности этого SecureRandom.
- Параметры:
-
seed— начальное значение. - Исключения:
-
NullPointerException— еслиseedравноnull - См. также:
setSeed
public void setSeed(long seed)
long seed. Указанное начальное значение дополняет, а не заменяет существующее. Таким образом, гарантируется, что повторные вызовы никогда не снизят случайность. Генератор псевдослучайных чисел SecureRandom не будет инициализироваться автоматически, если setSeed вызывается до любых вызовов nextBytes или reseed. Вызывающий код должен убедиться, что аргумент seed содержит достаточно энтропии для обеспечения безопасности этого SecureRandom.
Этот метод определен для совместимости с java.util.Random.
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).getSeed
public static byte[] getSeed(int numBytes)
Этот метод включен только для обратной совместимости. Рекомендуется использовать один из альтернативных методов getInstance для получения объекта SecureRandom, а затем вызвать метод generateSeed, чтобы получить байты начального значения из этого объекта.
- Параметры:
-
numBytes— количество байтов начального значения для генерации. - Возвращает:
- байты начального значения.
- Исключения:
-
IllegalArgumentException— еслиnumBytesотрицательно - См. также:
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
- См. также:
reseed
public void reseed()
SecureRandom энтропией, полученной из его источника энтропии.- Исключения:
-
UnsupportedOperationException— если нижележащая реализация поставщика не переопределила этот метод. - Начиная с версии:
- 9
reseed
public void reseed(SecureRandomParameters params)
SecureRandom энтропией, полученной из его источника энтропии, с дополнительными параметрами. Обратите внимание, что энтропия поступает из источника энтропии. Хотя некоторые данные в params могут содержать энтропию, основное их назначение — обеспечить разнообразие.
- Параметры:
-
params— дополнительные параметры - Исключения:
-
UnsupportedOperationException— если нижележащая реализация поставщика не переопределила этот метод. -
IllegalArgumentException— еслиparamsравноnull, является недопустимым или не поддерживается этимSecureRandom - Начиная с версии:
- 9
© 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.