Класс KeyFactory
public class KeyFactory extends Object
Key) в спецификации ключей (прозрачные представления базового материала ключа) и наоборот. Фабрики ключей двунаправленные. Это означает, что они позволяют создать объект непрозрачного ключа на основе заданной спецификации ключа (материала ключа) или получить базовый материал ключа из объекта ключа в подходящем формате.
Для одного и того же ключа может существовать несколько совместимых спецификаций ключей. Например, открытый ключ DSA можно задать с помощью DSAPublicKeySpec или X509EncodedKeySpec. Фабрику ключей можно использовать для преобразования между совместимыми спецификациями ключей.
Ниже приведен пример использования фабрики ключей для создания открытого ключа DSA на основе его кодировки. Предположим, Алиса получила цифровую подпись от Боба. Боб также отправил ей свой открытый ключ (в закодированном формате), чтобы она могла проверить его подпись. Затем Алиса выполняет следующие действия:
X509EncodedKeySpec bobPubKeySpec = new X509EncodedKeySpec(bobEncodedPubKey);
KeyFactory keyFactory = KeyFactory.getInstance("DSA");
PublicKey bobPubKey = keyFactory.generatePublic(bobPubKeySpec);
Signature sig = Signature.getInstance("DSA");
sig.initVerify(bobPubKey);
sig.update(data);
sig.verify(signature);
Каждая реализация платформы Java должна поддерживать следующие стандартные алгоритмы KeyFactory:
DiffieHellmanDSAECRSARSASSA-PSSX25519
- С версии:
- 1.2
- Внешние спецификации
- См. также:
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создает объект KeyFactory. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
final PrivateKey |
generatePrivate |
Создает объект закрытого ключа на основе предоставленной спецификации ключа (материала ключа). |
final PublicKey |
generatePublic |
Создает объект открытого ключа на основе предоставленной спецификации ключа (материала ключа). |
final String |
getAlgorithm() |
Возвращает имя алгоритма, связанного с этой KeyFactory. |
static KeyFactory |
getInstance |
Возвращает объект KeyFactory, преобразующий открытые/закрытые ключи указанного алгоритма. |
static KeyFactory |
getInstance |
Возвращает объект KeyFactory, преобразующий открытые/закрытые ключи указанного алгоритма. |
static KeyFactory |
getInstance |
Возвращает объект KeyFactory, преобразующий открытые/закрытые ключи указанного алгоритма. |
final <T extends KeySpec> |
getKeySpec |
Возвращает спецификацию (материал ключа) заданного объекта ключа. |
final Provider |
getProvider() |
Возвращает поставщика этого объекта фабрики ключей. |
final Key |
translateKey |
Преобразует объект ключа, поставщик которого может быть неизвестен или потенциально ненадежен, в соответствующий объект ключа этой фабрики ключей. |
Подробное описание конструкторов
KeyFactory
protected KeyFactory(KeyFactorySpi keyFacSpi, Provider provider, String algorithm)
KeyFactory.- Параметры:
-
keyFacSpi— делегат -
provider— поставщик -
algorithm— имя алгоритма, связываемого с этойKeyFactory
Подробное описание методов
getInstance
public static KeyFactory getInstance(String algorithm) throws NoSuchAlgorithmException
KeyFactory, преобразующий открытые/закрытые ключи указанного алгоритма. Этот метод перебирает список зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного. Возвращается новый объект KeyFactory, содержащий реализацию KeyFactorySpi от первого поставщика, поддерживающего указанный алгоритм.
Список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Примечание по реализации:
- Эталонная реализация JDK дополнительно использует свойство
jdk.security.provider.preferredSecurity, чтобы определить порядок предпочтения поставщиков для указанного алгоритма. Этот порядок может отличаться от порядка поставщиков, возвращаемых методомSecurity.getProviders(). - Параметры:
-
algorithm— имя запрошенного алгоритма ключа. Сведения о стандартных именах алгоритмов см. в разделе KeyFactory спецификации стандартных имен алгоритмов безопасности Java. - Возвращает:
- новый объект
KeyFactory - Вызывает исключение:
-
NoSuchAlgorithmException— если ни одинProviderне поддерживает реализациюKeyFactorySpiдля указанного алгоритма -
NullPointerException— еслиalgorithmимеет значениеnull - Внешние спецификации
- См. также:
getInstance
public static KeyFactory getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
KeyFactory, преобразующий открытые/закрытые ключи указанного алгоритма. Возвращается новый объект KeyFactory, содержащий реализацию KeyFactorySpi от указанного поставщика. Указанный поставщик должен быть зарегистрирован в списке поставщиков безопасности.
Список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Параметры:
-
algorithm— имя запрошенного алгоритма ключа. Сведения о стандартных именах алгоритмов см. в разделе KeyFactory спецификации стандартных имен алгоритмов безопасности Java. -
provider— имя поставщика. - Возвращает:
- новый объект
KeyFactory - Вызывает исключение:
-
IllegalArgumentException— если имя поставщика равноnullили пусто -
NoSuchAlgorithmException— если указанный поставщик не предоставляет реализациюKeyFactorySpiдля указанного алгоритма -
NoSuchProviderException— если указанный поставщик не зарегистрирован в списке поставщиков безопасности -
NullPointerException— еслиalgorithmимеет значениеnull - Внешние спецификации
- См. также:
getInstance
public static KeyFactory getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
KeyFactory, преобразующий открытые/закрытые ключи указанного алгоритма. Возвращается новый объект KeyFactory, содержащий реализацию KeyFactorySpi от указанного поставщика. Обратите внимание, что указанный поставщик не обязательно должен быть зарегистрирован в списке поставщиков.
- Параметры:
-
algorithm— имя запрошенного алгоритма ключа. Сведения о стандартных именах алгоритмов см. в разделе KeyFactory спецификации стандартных имен алгоритмов безопасности Java. -
provider— поставщик. - Возвращает:
- новый объект
KeyFactory - Вызывает исключение:
-
IllegalArgumentException— если указанный поставщик равенnull -
NoSuchAlgorithmException— если указанный объектProviderне предоставляет реализациюKeyFactorySpiдля указанного алгоритма -
NullPointerException— еслиalgorithmимеет значениеnull - С версии:
- 1.4
- Внешние спецификации
- См. также:
getProvider
public final Provider getProvider()
- Возвращает:
- поставщика этого объекта фабрики ключей
getAlgorithm
public final String getAlgorithm()
KeyFactory.- Возвращает:
- имя алгоритма, связанного с этой
KeyFactory
generatePublic
public final PublicKey generatePublic(KeySpec keySpec) throws InvalidKeySpecException
- Параметры:
-
keySpec— спецификация (материал ключа) открытого ключа. - Возвращает:
- открытый ключ.
- Вызывает исключение:
-
InvalidKeySpecException— если заданная спецификация ключа не подходит для создания открытого ключа этой фабрикой ключей.
generatePrivate
public final PrivateKey generatePrivate(KeySpec keySpec) throws InvalidKeySpecException
- Параметры:
-
keySpec— спецификация (материал ключа) закрытого ключа. - Возвращает:
- закрытый ключ.
- Вызывает исключение:
-
InvalidKeySpecException— если заданная спецификация ключа не подходит для создания закрытого ключа этой фабрикой ключей.
getKeySpec
public final <T extends KeySpec> T getKeySpec(Key key, Class<T> keySpec) throws InvalidKeySpecException
keySpec задает класс спецификации, в экземпляре которого должен быть возвращен материал ключа. Например, это может быть DSAPublicKeySpec.class, что указывает на необходимость вернуть материал ключа в экземпляре класса DSAPublicKeySpec.- Параметры типа:
T— тип возвращаемой спецификации ключа- Параметры:
-
key— ключ. -
keySpec— класс спецификации, в экземпляре которого должен быть возвращен материал ключа. - Возвращает:
- базовую спецификацию ключа (материал ключа) в экземпляре запрошенного класса спецификации.
- Вызывает исключение:
-
InvalidKeySpecException— если запрошенная спецификация ключа не подходит для заданного ключа или заданный ключ не может быть обработан (например, если его алгоритм или формат не распознан).
translateKey
public final Key translateKey(Key key) throws InvalidKeyException
- Параметры:
-
key— ключ, поставщик которого неизвестен или ненадежен. - Возвращает:
- преобразованный ключ.
- Вызывает исключение:
-
InvalidKeyException— если заданный ключ не может быть обработан этой фабрикой ключей.
© 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://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/KeyFactory.html