Spec-Zone.ru › OpenJDK 25

Класс KeyGenerator

java.lang.Object
javax.crypto.KeyGenerator
public class KeyGenerator extends Object
Этот класс предоставляет функциональность генератора секретных (симметричных) ключей.

Генераторы ключей создаются с помощью одного из методов класса getInstance.

Объекты KeyGenerator можно использовать повторно: после создания ключа тот же объект KeyGenerator можно использовать для генерации новых ключей.

Существует два способа сгенерировать ключ: независимо от алгоритма и с учетом конкретного алгоритма. Разница между ними заключается только в инициализации объекта:

  • Инициализация независимо от алгоритма

    Для всех генераторов ключей важны такие понятия, как размер ключа и источник случайных данных. В этом классе KeyGenerator есть метод init, принимающий эти два универсальных типа аргументов. Также имеется метод, принимающий только аргумент keysize и использующий реализацию SecureRandom провайдера с наивысшим приоритетом среди установленных в качестве источника случайных данных (или источник случайных данных, предоставляемый системой, если ни один из установленных провайдеров не предоставляет реализацию SecureRandom), а также метод, принимающий только источник случайных данных.

    Поскольку при вызове описанных выше методов init, не зависящих от алгоритма, другие параметры не указываются, провайдер сам определяет, что делать с параметрами, зависящими от алгоритма (если таковые имеются), которые будут связаны с каждым ключом.

  • Инициализация с учетом конкретного алгоритма

    Если набор параметров, зависящих от алгоритма, уже задан, доступны два метода init, принимающих аргумент AlgorithmParameterSpec. Один из них также принимает аргумент SecureRandom, а другой использует реализацию SecureRandom провайдера с наивысшим приоритетом среди установленных в качестве источника случайных данных (или источник случайных данных, предоставляемый системой, если ни один из установленных провайдеров не предоставляет реализацию SecureRandom).

Если клиент явно не инициализирует KeyGenerator (вызвав метод init), каждый провайдер должен предоставить и задокументировать инициализацию по умолчанию. Сведения о значениях KeyGenerator по умолчанию, используемых провайдерами JDK, см. в разделах «Ограничения на размер ключа» документа Провайдеры JDK. Однако следует учитывать, что значения по умолчанию могут различаться у разных провайдеров. Кроме того, значение по умолчанию для провайдера может измениться в будущей версии. Поэтому рекомендуется явно инициализировать KeyGenerator, а не полагаться на значения по умолчанию конкретного провайдера.

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

  • AES (128, 256)
  • ChaCha20
  • DESede (168)
  • HmacSHA1
  • HmacSHA256
Описание этих алгоритмов приведено в разделе KeyGenerator спецификации стандартных имен алгоритмов безопасности Java. Сведения о поддержке других алгоритмов см. в документации к используемой реализации.
Начиная с:
1.4
Внешние спецификации
  • Стандартные имена алгоритмов безопасности Java
См. также:
  • SecretKey

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

KeyGenerator(KeyGeneratorSpi keyGenSpi, Provider provider, String algorithm)
Модификатор Конструктор Описание
protected
Создает объект KeyGenerator.

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

Модификатор и тип Метод Описание
final SecretKey generateKey()
Генерирует секретный ключ.
final String getAlgorithm()
Возвращает имя алгоритма этого объекта KeyGenerator.
static final KeyGenerator getInstance(String algorithm)
Возвращает объект KeyGenerator, генерирующий секретные ключи для указанного алгоритма.
static final KeyGenerator getInstance(String algorithm, String provider)
Возвращает объект KeyGenerator, генерирующий секретные ключи для указанного алгоритма.
static final KeyGenerator getInstance(String algorithm, Provider provider)
Возвращает объект KeyGenerator, генерирующий секретные ключи для указанного алгоритма.
final Provider getProvider()
Возвращает провайдер этого объекта KeyGenerator.
final void init(int keysize)
Инициализирует этот генератор ключей для указанного размера ключа.
final void init(int keysize, SecureRandom random)
Инициализирует этот генератор ключей для указанного размера ключа, используя предоставленный пользователем источник случайных данных.
final void init(SecureRandom random)
Инициализирует этот генератор ключей.
final void init(AlgorithmParameterSpec params)
Инициализирует этот генератор ключей указанным набором параметров.
final void init(AlgorithmParameterSpec params, SecureRandom random)
Инициализирует этот генератор ключей указанным набором параметров и предоставленным пользователем источником случайных данных.

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

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

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

KeyGenerator

protected KeyGenerator(KeyGeneratorSpi keyGenSpi, Provider provider, String algorithm)
Создает объект KeyGenerator.
Параметры:
keyGenSpi — делегат
provider — провайдер
algorithm — алгоритм

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

getAlgorithm

public final String getAlgorithm()
Возвращает имя алгоритма этого объекта KeyGenerator.

Это то же имя, которое было указано в одном из вызовов getInstance, создавших этот объект KeyGenerator.

Возвращает:
имя алгоритма этого объекта KeyGenerator.

getInstance

public static final KeyGenerator getInstance(String algorithm) throws NoSuchAlgorithmException
Возвращает объект KeyGenerator, генерирующий секретные ключи для указанного алгоритма.

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

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

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

getInstance

public static final KeyGenerator getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
Возвращает объект KeyGenerator, генерирующий секретные ключи для указанного алгоритма.

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

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

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

getInstance

public static final KeyGenerator getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
Возвращает объект KeyGenerator, генерирующий секретные ключи для указанного алгоритма.

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

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

getProvider

public final Provider getProvider()
Возвращает провайдер этого объекта KeyGenerator.
Возвращает:
провайдер этого объекта KeyGenerator

init

public final void init(SecureRandom random)
Инициализирует этот генератор ключей.
Параметры:
random — источник случайных данных для этого генератора

init

public final void init(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException
Инициализирует этот генератор ключей указанным набором параметров.

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

Параметры:
params — параметры генерации ключа
Исключения:
InvalidAlgorithmParameterException — если указанные параметры не подходят для этого генератора ключей

init

public final void init(AlgorithmParameterSpec params, SecureRandom random) throws InvalidAlgorithmParameterException
Инициализирует этот генератор ключей указанным набором параметров и предоставленным пользователем источником случайных данных.
Параметры:
params — параметры генерации ключа
random — источник случайных данных для этого генератора ключей
Исключения:
InvalidAlgorithmParameterException — если params не подходит для этого генератора ключей

init

public final void init(int keysize)
Инициализирует этот генератор ключей для указанного размера ключа.

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

Параметры:
keysize — размер ключа. Это метрика, зависящая от алгоритма и задаваемая в битах.
Исключения:
InvalidParameterException — если размер ключа указан неверно или не поддерживается.

init

public final void init(int keysize, SecureRandom random)
Инициализирует этот генератор ключей для указанного размера ключа, используя предоставленный пользователем источник случайных данных.
Параметры:
keysize — размер ключа. Это метрика, зависящая от алгоритма и задаваемая в битах.
random — источник случайных данных для этого генератора ключей
Исключения:
InvalidParameterException — если размер ключа указан неверно или не поддерживается.

generateKey

public final SecretKey generateKey()
Генерирует секретный ключ.
Возвращает:
новый ключ

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/javax/crypto/KeyGenerator.html

Spec-Zone.ru

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