Класс KeyPairGenerator
public abstract class KeyPairGenerator extends KeyPairGeneratorSpi
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 для получения информации о значениях по умолчанию KeyPairGenerator, используемых поставщиками JDK. Однако обратите внимание, что значения по умолчанию могут различаться между различными поставщиками. Кроме того, значение по умолчанию для поставщика может измениться в будущей версии. Поэтому рекомендуется явно инициализировать KeyPairGenerator, вместо того, чтобы полагаться на значения по умолчанию поставщиков.
Обратите внимание, что этот класс является абстрактным и расширяет KeyPairGeneratorSpi по историческим причинам. Разработчики приложений должны обращать внимание только на методы, определенные в этом KeyPairGenerator классе; все методы в суперклассе предназначены для поставщиков криптографических сервисов, которые хотят предоставить свои собственные реализации генераторов пар ключей.
Каждая реализация платформы Java обязана поддерживать следующие стандартные KeyPairGenerator алгоритмы и размеры ключей (в скобках):
-
DiffieHellman(1024, 2048, 4096) -
DSA(1024, 2048) -
RSA(1024, 2048, 4096)
- Since:
- 1.1
- See Also:
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
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)
- Параметры:
-
algorithm- стандартное строковое имя алгоритма. См. раздел KeyPairGenerator в Спецификации имён стандартных алгоритмов Java Security для получения информации о стандартных именах алгоритмов.
Подробное описание методов
getAlgorithm
public String getAlgorithm()
- Возвращает:
- стандартное строковое имя алгоритма.
getInstance
public static KeyPairGenerator getInstance(String algorithm) throws NoSuchAlgorithmException
Этот метод перебирает список зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного поставщика. Возвращается новый объект KeyPairGenerator, инкапсулирующий реализацию KeyPairGeneratorSpi из первого поставщика, который поддерживает указанный алгоритм.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Описание реализации:
- Реализация JDK Reference Implementation дополнительно использует свойство
jdk.security.provider.preferredSecurityдля определения предпочтительного порядка поставщиков для указанного алгоритма. Это может отличаться от порядка поставщиков, возвращаемого методомSecurity.getProviders(). - Параметры:
-
algorithm- стандартное строковое имя алгоритма. См. раздел KeyPairGenerator в Спецификации имён стандартных алгоритмов Java Security для получения информации о стандартных именах алгоритмов. - Возвращает:
- новый
KeyPairGeneratorобъект - Исключения:
-
NoSuchAlgorithmException- если ни одинProviderне поддерживает реализациюKeyPairGeneratorSpiдля указанного алгоритма -
NullPointerException- еслиalgorithmявляетсяnull - См. также:
getInstance
public static KeyPairGenerator getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
Возвращается новый объект KeyPairGenerator, инкапсулирующий реализацию KeyPairGeneratorSpi от указанного поставщика. Указанный поставщик должен быть зарегистрирован в списке поставщиков безопасности.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Параметры:
-
algorithm- стандартное строковое имя алгоритма. См. раздел KeyPairGenerator в Спецификации имён стандартных алгоритмов Java Security для получения информации о стандартных именах алгоритмов. -
provider- строковое имя поставщика. - Возвращает:
- новый
KeyPairGeneratorобъект - Исключения:
-
IllegalArgumentException- если имя поставщика является пустым или пустой строкой -
NoSuchAlgorithmException- если реализацияKeyPairGeneratorSpiдля указанного алгоритма недоступна от указанного поставщика -
NoSuchProviderException- если указанный поставщик не зарегистрирован в списке поставщиков безопасности -
NullPointerException- еслиalgorithmявляетсяnull - См. также:
getInstance
public static KeyPairGenerator getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
Возвращается новый объект KeyPairGenerator, инкапсулирующий реализацию KeyPairGeneratorSpi из указанного объекта Provider. Обратите внимание, что указанный объект Provider не обязательно должен быть зарегистрирован в списке поставщиков.
- Параметры:
-
algorithm- стандартное строковое имя алгоритма. См. раздел KeyPairGenerator в Спецификации имён стандартных алгоритмов Java Security для получения информации о стандартных именах алгоритмов. -
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, 2021, 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/17/docs/api/java.base/java/security/KeyPairGenerator.html