Spec-Zone.ru › OpenJDK 27

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

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

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, 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