Класс 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)
Эти алгоритмы описаны в разделе «KeyPairGenerator» ( KeyPairGenerator section) Спецификации стандартных имён алгоритмов Java Security. Обратитесь к документации к релизу вашей реализации, чтобы узнать, поддерживаются ли какие-либо другие алгоритмы.
С момента:
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)

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

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

getAlgorithm

public String getAlgorithm()

Возвращает стандартное имя алгоритма для этого генератора пар ключей. См. раздел KeyPairGenerator в спецификации стандартных имен алгоритмов безопасности Java для получения информации о стандартных именах алгоритмов.

Возвращает:
стандартное строковое имя алгоритма.

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 для получения информации о стандартных именах алгоритмов.
Возвращает:
новый объект 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

Spec-Zone .ru
спецификации, руководства, описания, API