Spec-Zone.ru › OpenJDK 25

Класс KeyPairGenerator

java.lang.Object
java.security.KeyPairGeneratorSpi
java.security.KeyPairGenerator
public abstract class KeyPairGenerator extends KeyPairGeneratorSpi
Класс KeyPairGenerator используется для генерации пар открытых и закрытых ключей. Генераторы пар ключей создаются с помощью фабричных методов getInstance (статических методов, возвращающих экземпляры заданного класса).

Генератор пар ключей для определённого алгоритма создаёт пару открытого и закрытого ключей, которую можно использовать с этим алгоритмом. Он также связывает с каждым из созданных ключей параметры, специфичные для алгоритма.

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

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

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

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

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

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

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

Обратите внимание, что этот класс является абстрактным и по историческим причинам наследуется от KeyPairGeneratorSpi. Разработчикам приложений следует учитывать только методы, определённые в этом классе KeyPairGenerator; все методы суперкласса предназначены для поставщиков криптографических служб, желающих предоставить собственные реализации генераторов пар ключей.

Каждая реализация платформы Java должна поддерживать следующие стандартные алгоритмы KeyPairGenerator. Для алгоритма "EC" реализации должны поддерживать кривые, указанные в скобках. Для остальных алгоритмов реализации должны поддерживать размеры ключей, указанные в скобках.

  • DiffieHellman (1024, 2048, 3072, 4096)
  • DSA (1024, 2048)
  • EC (secp256r1, secp384r1)
  • RSA (1024, 2048, 3072, 4096)
  • RSASSA-PSS (2048, 3072, 4096)
  • X25519
Эти алгоритмы описаны в разделе KeyPairGenerator спецификации стандартных имён алгоритмов Java Security. Чтобы узнать, поддерживаются ли какие-либо другие алгоритмы, обратитесь к документации к выпуску вашей реализации.
С версии:
1.1
Внешние спецификации
  • Стандартные имена алгоритмов Java Security
См. также:
  • AlgorithmParameterSpec

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

KeyPairGenerator(String algorithm)
Модификатор Конструктор Описание
protected
Создаёт объект KeyPairGenerator для указанного алгоритма.

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

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

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

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

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

KeyPairGenerator

protected KeyPairGenerator(String algorithm)
Создаёт объект KeyPairGenerator для указанного алгоритма.
Параметры:
algorithm — стандартное строковое имя алгоритма. Сведения о стандартных именах алгоритмов см. в разделе KeyPairGenerator спецификации стандартных имён алгоритмов Java Security.
Внешние спецификации
  • Стандартные имена алгоритмов Java Security

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

getAlgorithm

public String getAlgorithm()
Возвращает стандартное имя алгоритма для этого генератора пар ключей. Сведения о стандартных именах алгоритмов см. в разделе KeyPairGenerator спецификации стандартных имён алгоритмов Java Security.
Возвращает:
стандартное строковое имя алгоритма.
Внешние спецификации
  • Стандартные имена алгоритмов Java Security

getInstance

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

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

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

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

getInstance

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

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

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

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

getInstance

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

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

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

getProvider

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

initialize

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

initialize

public void initialize(int keysize, SecureRandom random)
Инициализирует генератор пар ключей для заданного размера ключа с указанным источником случайных чисел (и набором параметров по умолчанию).
Определено в:
initialize в классе KeyPairGeneratorSpi
Параметры:
keysize — размер ключа. Это метрика, специфичная для алгоритма, например длина модуля, задаваемая в битах.
random — источник случайных чисел.
Исключения:
InvalidParameterException — если keysize не поддерживается этим объектом KeyPairGenerator.
С версии:
1.2

initialize

public void initialize(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException
Инициализирует генератор пар ключей с использованием указанного набора параметров и реализации SecureRandom установленного провайдера с наивысшим приоритетом в качестве источника случайных чисел. (Если ни один из установленных провайдеров не предоставляет реализацию SecureRandom, используется источник случайных чисел, предоставляемый системой.)

Этот конкретный метод добавлен в ранее определённый абстрактный класс. Метод вызывает метод KeyPairGeneratorSpi initialize, передавая ему params и источник случайных чисел (полученный от установленного провайдера с наивысшим приоритетом или предоставляемый системой, если ни один из установленных провайдеров такой источник не предоставляет). Этот метод initialize всегда выбрасывает UnsupportedOperationException, если провайдер не переопределил его.

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

initialize

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

Этот конкретный метод добавлен в ранее определённый абстрактный класс. Метод вызывает метод KeyPairGeneratorSpi initialize, передавая ему params и random. Этот метод initialize всегда выбрасывает UnsupportedOperationException, если провайдер не переопределил его.

Переопределяет:
initialize в классе KeyPairGeneratorSpi
Параметры:
params — набор параметров, используемый для генерации ключей.
random — источник случайных чисел.
Исключения:
InvalidAlgorithmParameterException — если заданные параметры не подходят для этого генератора пар ключей.
С версии:
1.2

genKeyPair

public final KeyPair genKeyPair()
Генерирует пару ключей.

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

При каждом вызове будет генерироваться новая пара ключей.

Этот метод функционально эквивалентен методу generateKeyPair.

Возвращает:
сгенерированную пару ключей
С версии:
1.2

generateKeyPair

public KeyPair generateKeyPair()
Генерирует пару ключей.

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

При каждом вызове будет генерироваться новая пара ключей.

Этот метод функционально эквивалентен методу genKeyPair.

Определено в:
generateKeyPair в классе KeyPairGeneratorSpi
Возвращает:
сгенерированную пару ключей

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по 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/java/security/KeyPairGenerator.html

Spec-Zone.ru

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