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