Spec-Zone.ru › OpenJDK 8

Класс SecureRandom

  • java.lang.Object
    • java.util.Random
      • java.security.SecureRandom
Все реализованные интерфейсы:
Serializable

public class SecureRandom
extends Random

Этот класс предоставляет криптографически стойкий генератор случайных чисел (RNG).

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

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

SecureRandom random = new SecureRandom();

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

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

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

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

byte seed[] = random.generateSeed(20);
Примечание: В зависимости от реализации generateSeed и nextBytes методы могут блокироваться, поскольку собирается энтропия, например, если им нужно читать из /dev/random на различных операционных системах Unix-подобных.
См. также:
SecureRandomSpi, Random, Сериализованная форма

Конструкторы

Модификатор Конструктор и описание
SecureRandom()

Создает генератор случайных чисел (RNG), реализующий алгоритм случайных чисел по умолчанию.

SecureRandom(byte[] seed)

Создает генератор случайных чисел (RNG), реализующий алгоритм случайных чисел по умолчанию.

protected SecureRandom(SecureRandomSpi secureRandomSpi, Provider provider)

Создает объект SecureRandom.

Методы

Модификатор и тип Метод и описание
byte[] generateSeed(int numBytes)

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

String getAlgorithm()

Возвращает имя алгоритма, реализованного этим объектом SecureRandom.

static SecureRandom getInstance(String algorithm)

Возвращает объект SecureRandom, реализующий указанный алгоритм генератора случайных чисел (RNG).

static SecureRandom getInstance(String algorithm, Provider provider)

Возвращает объект SecureRandom, реализующий указанный алгоритм генератора случайных чисел (RNG).

static SecureRandom getInstance(String algorithm, String provider)

Возвращает объект SecureRandom, реализующий указанный алгоритм генератора случайных чисел (RNG).

static SecureRandom getInstanceStrong()

Возвращает объект SecureRandom, выбранный с использованием алгоритмов/поставщиков, указанных в securerandom.strongAlgorithms свойстве Security.

Provider getProvider()

Возвращает поставщика этого объекта SecureRandom.

static byte[] getSeed(int numBytes)

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

protected int next(int numBits)

Генерирует целое число, содержащее заданное количество псевдослучайных битов (выровненное вправо, с ведущими нулями).

void nextBytes(byte[] bytes)

Генерирует заданное количество случайных байтов.

void setSeed(byte[] seed)

Переинициализирует этот объект генератора случайных чисел.

void setSeed(long seed)

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

Методы, унаследованные от класса java.util.Random

doubles, doubles, doubles, doubles, ints, ints, ints, ints, longs, longs, longs, longs, nextBoolean, nextDouble, nextFloat, nextGaussian, nextInt, nextInt, nextLong

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Конструкторы

SecureRandom

public SecureRandom()

Создаёт генератор псевдослучайных чисел (RNG), реализующий стандартный алгоритм.

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

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

См. раздел SecureRandom в документации Java Cryptography Architecture по стандартным именам алгоритмов для получения информации о стандартных именах алгоритмов RNG.

Возвращённый объект SecureRandom не был инициализирован. Чтобы инициализировать возвращённый объект, вызовите метод setSeed. Если метод setSeed не был вызван, первый вызов метода nextBytes заставит объект SecureRandom инициализироваться сам. Эта самоинициализация не произойдёт, если ранее был вызван метод setSeed.

SecureRandom

public SecureRandom(byte[] seed)

Создаёт генератор псевдослучайных чисел (RNG), реализующий стандартный алгоритм. Объект SecureRandom инициализируется указанными байтами.

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

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

См. раздел SecureRandom в документации Java Cryptography Architecture по стандартным именам алгоритмов для получения информации о стандартных именах алгоритмов RNG.

Параметры:
seed - seed.

SecureRandom

protected SecureRandom(SecureRandomSpi secureRandomSpi,
                       Provider provider)

Создаёт объект SecureRandom.

Параметры:
secureRandomSpi - реализация SecureRandom.
provider - поставщик.

Методы

getInstance

public static SecureRandom getInstance(String algorithm)
                                throws NoSuchAlgorithmException

Возвращает объект SecureRandom, реализующий указанный алгоритм генерации псевдослучайных чисел (RNG).

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

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

Возвращённый объект SecureRandom не был инициализирован. Чтобы инициализировать возвращённый объект, вызовите метод setSeed. Если метод setSeed не был вызван, первый вызов метода nextBytes заставит объект SecureRandom инициализироваться сам. Эта самоинициализация не произойдёт, если ранее был вызван метод setSeed.

Параметры:
algorithm - имя алгоритма RNG. См. раздел SecureRandom в документации Java Cryptography Architecture по стандартным именам алгоритмов для получения информации о стандартных именах алгоритмов RNG.
Возвращает:
новый объект SecureRandom.
Исключения:
NoSuchAlgorithmException - если ни один поставщик не поддерживает реализацию SecureRandomSpi для указанного алгоритма.
С:
1.2
См. также:
Provider

getInstance

public static SecureRandom getInstance(String algorithm,
                                       String provider)
                                throws NoSuchAlgorithmException,
                                       NoSuchProviderException

Возвращает объект SecureRandom, реализующий указанный алгоритм генерации псевдослучайных чисел (RNG).

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

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

Возвращённый объект SecureRandom не был инициализирован. Чтобы инициализировать возвращённый объект, вызовите метод setSeed. Если метод setSeed не был вызван, первый вызов метода nextBytes заставит объект SecureRandom инициализироваться сам. Эта самоинициализация не произойдёт, если ранее был вызван метод setSeed.

Параметры:
algorithm - имя алгоритма RNG. См. раздел SecureRandom в документации Java Cryptography Architecture по стандартным именам алгоритмов для получения информации о стандартных именах алгоритмов RNG.
provider - имя поставщика.
Возвращает:
новый объект SecureRandom.
Исключения:
NoSuchAlgorithmException - если реализация SecureRandomSpi для указанного алгоритма недоступна от указанного поставщика.
NoSuchProviderException - если указанный поставщик не зарегистрирован в списке поставщиков безопасности.
IllegalArgumentException - если имя поставщика null или пустое.
С:
1.2
См. также:
Provider

getInstance

public static SecureRandom getInstance(String algorithm,
                                       Provider provider)
                                throws NoSuchAlgorithmException

Возвращает объект SecureRandom, реализующий указанный алгоритм генерации псевдослучайных чисел (RNG).

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

Возвращённый объект SecureRandom не был инициализирован. Чтобы инициализировать возвращённый объект, вызовите метод setSeed. Если метод setSeed не был вызван, первый вызов метода nextBytes заставит объект SecureRandom инициализироваться сам. Эта самоинициализация не произойдёт, если ранее был вызван метод setSeed.

Параметры:
algorithm - имя алгоритма RNG. См. раздел SecureRandom в документации Java Cryptography Architecture по стандартным именам алгоритмов для получения информации о стандартных именах алгоритмов RNG.
provider - поставщик.
Возвращает:
новый объект SecureRandom.
Исключения:
NoSuchAlgorithmException - если реализация SecureRandomSpi для указанного алгоритма недоступна от указанного объекта поставщика.
IllegalArgumentException - если указанный поставщик null.
С:
1.4
См. также:
Provider

getProvider

public final Provider getProvider()

Возвращает поставщика этого объекта SecureRandom.

Возвращает:
поставщик этого объекта SecureRandom.

getAlgorithm

public String getAlgorithm()

Возвращает имя алгоритма, реализуемого этим объектом SecureRandom.

Возвращает:
имя алгоритма или unknown если имя алгоритма определить нельзя.
С:
1.5

setSeed

public void setSeed(byte[] seed)

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

Параметры:
seed - seed.
См. также:
getSeed(int)

setSeed

public void setSeed(long seed)

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

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

Переопределяет:
setSeed в классе Random
Параметры:
seed - seed.
См. также:
getSeed(int)

nextBytes

public void nextBytes(byte[] bytes)

Генерирует заданное количество случайных байт.

Если ранее не был вызван метод setSeed, первый вызов этого метода заставит этот объект SecureRandom инициализироваться сам. Эта самоинициализация не произойдёт, если ранее был вызван метод setSeed.

Переопределяет:
nextBytes в классе Random
Параметры:
bytes - массив, который будет заполнен случайными байтами.

next

protected final int next(int numBits)

Генерирует целое число, содержащее указанное количество псевдослучайных бит (справа, с ведущими нулями). Этот метод переопределяет метод java.util.Random, и служит источником случайных бит для всех методов, унаследованных от этого класса (например, nextInt, nextLong, и nextFloat).

Переопределяет:
next в классе Random
Параметры:
numBits - количество псевдослучайных бит для генерации, где 0 <= numBits <= 32.
Возвращает:
целое число, содержащее указанное количество псевдослучайных бит (справа, с ведущими нулями).

getSeed

public static byte[] getSeed(int numBytes)

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

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

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

generateSeed

public byte[] generateSeed(int numBytes)

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

Параметры:
numBytes - количество байтов инициализации для генерации.
Возвращает:
байты инициализации.

getInstanceStrong

public static SecureRandom getInstanceStrong()
                                      throws NoSuchAlgorithmException

Возвращает объект SecureRandom, который был выбран с использованием алгоритмов/поставщиков, указанных в свойстве securerandom.strongAlgorithms Security.

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

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

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

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

Spec-Zone.ru

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