Класс KeyPairGenerator
public abstract class KeyPairGenerator extends KeyPairGeneratorSpi
KeyPairGenerator используется для генерации пар открытых и закрытых ключей. Генераторы пар ключей создаются с помощью методов фабрики getInstance (статические методы, возвращающие экземпляры заданного класса). Генератор пар ключей для определенного алгоритма создаёт пару открытый/закрытый ключ, которые могут быть использованы с этим алгоритмом. Он также связывает алгоритмоспецифические параметры с каждым из сгенерированных ключей.
Существует два способа генерации пары ключей: независимый от алгоритма и зависящий от алгоритма. Единственное различие между ними заключается в инициализации объекта:
-
Инициализация, независимая от алгоритма
Все генераторы пар ключей используют понятия размера ключа и источника случайных чисел. Размер ключа интерпретируется по-разному для разных алгоритмов (например, в случае алгоритма DSA размер ключа соответствует длине модуля). В этом классе
KeyPairGeneratorесть методinitialize, который принимает эти два универсальных типа аргументов. Также есть метод, принимающий только аргументkeysize, и использующий реализациюSecureRandomот поставщика с наивысшим приоритетом как источник случайных чисел. (Если ни один из установленных поставщиков не предоставляет реализациюSecureRandom, используется системный источник случайных чисел.)Поскольку при вызове вышеуказанных методов, независимых от алгоритма, не задаются другие параметры, поставщик сам решает, что делать с алгоритмоспецифическими параметрами (если таковые имеются), которые должны быть связаны с каждым из ключей.
Если алгоритм — алгоритм DSA, а размер ключа (размер модуля) — 512, 768, 1024 или 2048, то поставщик Sun использует набор предварительно вычисленных значений для параметров
p,q, иg. Если размер модуля не является одним из указанных выше значений, поставщик Sun создаёт новый набор параметров. Другие поставщики могут иметь наборы предварительно вычисленных параметров для большего количества размеров модулей, чем те, что указаны выше. Иные же поставщики могут вообще не иметь списка предварительно вычисленных параметров и вместо этого всегда создавать новые наборы параметров. -
Инициализация, зависящая от алгоритма
В ситуациях, когда набор алгоритмоспецифических параметров уже существует (например, так называемые параметры сообщества в DSA), есть два метода
initialize, у которых есть аргументAlgorithmParameterSpec. У одного также есть аргументSecureRandom, в то время как другой использует реализациюSecureRandomот поставщика с наивысшим приоритетом как источник случайных чисел. (Если ни один из установленных поставщиков не предоставляет реализациюSecureRandom, используется системный источник случайных чисел.)
В случае, если клиент не инициализирует KeyPairGenerator явно (через вызов метода initialize), каждый поставщик должен предоставить (и задокументировать) значения по умолчанию. См. разделы с ограничениями на размер ключа в документе JDK Providers для получения информации о значениях по умолчанию, используемых поставщиками JDK. Однако обратите внимание, что значения по умолчанию могут различаться между разными поставщиками. Кроме того, значение по умолчанию для поставщика может измениться в будущих версиях. Поэтому рекомендуется явно инициализировать KeyPairGenerator вместо того, чтобы полагаться на значения по умолчанию, специфичные для поставщика.
Обратите внимание, что этот класс является абстрактным и наследуется от KeyPairGeneratorSpi по историческим причинам. Разработчики приложений должны обращать внимание только на методы, определённые в этом классе KeyPairGenerator; все методы в суперклассе предназначены для поставщиков криптографических сервисов, которые хотят предоставить свои собственные реализации генераторов пар ключей.
Каждая реализация платформы Java обязана поддерживать следующие стандартные алгоритмы KeyPairGenerator и размеры ключей в скобках:
-
DiffieHellman(1024, 2048, 4096) -
DSA(1024, 2048) -
RSA(1024, 2048, 4096)
- Since:
- 1.1
- См. также:
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создаёт объект KeyPairGenerator для указанного алгоритма. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
KeyPair |
generateKeyPair() |
Генерирует пару ключей. |
final KeyPair |
genKeyPair() |
Генерирует пару ключей. |
String |
getAlgorithm() |
Возвращает стандартное имя алгоритма для этого генератора пар ключей. |
static KeyPairGenerator |
getInstance |
Возвращает объект KeyPairGenerator, который генерирует пары открытых/закрытых ключей для указанного алгоритма. |
static KeyPairGenerator |
getInstance |
Возвращает объект KeyPairGenerator, который генерирует пары открытых/закрытых ключей для указанного алгоритма. |
static KeyPairGenerator |
getInstance |
Возвращает объект KeyPairGenerator, который генерирует пары открытых/закрытых ключей для указанного алгоритма. |
final Provider |
getProvider() |
Возвращает поставщика этого объекта генератора пар ключей. |
void |
initialize |
Инициализирует генератор пар ключей для определённого размера ключа с использованием набора параметров по умолчанию и реализации SecureRandom поставщика с наивысшим приоритетом как источника случайных чисел. |
void |
initialize |
Инициализирует генератор пар ключей для определённого размера ключа с заданным источником случайных чисел (и набором параметров по умолчанию). |
void |
initialize |
Инициализирует генератор пар ключей с использованием заданного набора параметров и реализации SecureRandom поставщика с наивысшим приоритетом как источника случайных чисел. |
void |
initialize |
Инициализирует генератор пар ключей с заданным набором параметров и источником случайных чисел. |
Подробное описание конструкторов
KeyPairGenerator
protected KeyPairGenerator(String algorithm)
KeyPairGenerator для указанного алгоритма.- Параметры:
-
algorithm- стандартное строковое имя алгоритма. См. раздел KeyPairGenerator в Спецификации Java Security Standard Algorithm Names для получения информации о стандартных именах алгоритмов.
Подробное описание методов
getAlgorithm
public String getAlgorithm()
- Возвращает:
- стандартное строковое имя алгоритма.
getInstance
public static KeyPairGenerator getInstance(String algorithm) throws NoSuchAlgorithmException
KeyPairGenerator, который генерирует пары открытых/закрытых ключей для указанного алгоритма. Этот метод проходит по списку зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного. Возвращается новый объект KeyPairGenerator, инкапсулирующий реализацию KeyPairGeneratorSpi от первого поставщика, который поддерживает указанный алгоритм.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Примечание реализации:
- Реализация JDK дополнительно использует свойство
jdk.security.provider.preferredSecurityдля определения порядка предпочтительных поставщиков для указанного алгоритма. Это может отличаться от порядка поставщиков, возвращаемого методомSecurity.getProviders(). - Параметры:
-
algorithm- стандартное строковое имя алгоритма. См. раздел KeyPairGenerator в Спецификации Java Security Standard Algorithm Names для получения информации о стандартных именах алгоритмов. - Возвращает:
- новый объект
KeyPairGenerator - Исключения:
-
NoSuchAlgorithmException- если ни один поставщик не поддерживает реализациюKeyPairGeneratorSpiдля указанного алгоритма -
NullPointerException- еслиalgorithmявляетсяnull - См. также:
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 - См. также:
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
- См. также:
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, 2023, 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/21/docs/api/java.base/java/security/KeyPairGenerator.html