Spec-Zone.ru › OpenJDK 24

Класс 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, независимых от алгоритма, не указаны другие параметры, поставщик сам определяет, как обрабатывать параметры, специфичные для алгоритма (если таковые имеются), которые должны быть связаны с каждым из ключей.

    Если алгоритм — DSA, а размер ключа (размер модуля) — 512, 768, 1024 или 2048, поставщик Sun использует набор предопределённых значений для параметров p, q и g. Если размер модуля не соответствует одному из вышеперечисленных значений, поставщик Sun создаёт новый набор параметров. Другие поставщики могут иметь наборы предопределённых параметров для большего числа размеров модуля, чем только упомянутые выше. Некоторые вообще могут не иметь списка предопределённых параметров и всегда создавать новые наборы параметров.

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

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

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

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

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

  • DiffieHellman (1024, 2048, 4096)
  • DSA (1024, 2048)
  • RSA (1024, 2048, 4096)
Эти алгоритмы описаны в разделе KeyPairGenerator спецификации Java Security Standard Algorithm Names. Обратитесь к документации выпуска вашей реализации, чтобы узнать, поддерживаются ли какие-либо другие алгоритмы.
Since:
1.1
See Also:
  • 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)
Инициализирует генератор пар ключей с заданным набором параметров и источником случайных чисел.

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

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

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

KeyPairGenerator

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

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

getAlgorithm

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

getInstance

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

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

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

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

getInstance

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

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

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

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

getInstance

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

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

Параметры:
algorithm - стандартное строковое имя алгоритма. См. раздел KeyPairGenerator в спецификации Java Security Standard Algorithm Names для получения информации о стандартных именах алгоритмов.
provider - поставщик.
Возвращает:
новый объект KeyPairGenerator
Исключения:
IllegalArgumentException - если указанный поставщик является null
NoSuchAlgorithmException - если реализация KeyPairGeneratorSpi для указанного алгоритма недоступна от указанного объекта Provider
NullPointerException - если algorithm является null
С:
1.4
См. также:
  • 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
Возвращает:
сгенерированная пара ключей

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/security/KeyPairGenerator.html

Spec-Zone.ru

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