Класс 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 алгоритмы:
DiffieHellmanDSARSA
- С:
- 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 Security Standard Algorithm Names для получения информации об именах стандартных алгоритмов. - Возвращает:
- новый объект
KeyFactory - Исключения:
-
NoSuchAlgorithmException- если ни один из поставщиков не поддерживает реализациюProviderдля указанного алгоритма -
NullPointerException- еслиalgorithmявляетсяnull - См. также:
getInstance
public static KeyFactory getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
KeyFactory, который преобразует открытые/закрытые ключи указанного алгоритма. Возвращается новый объект KeyFactory, инкапсулирующий реализацию KeyFactorySpi от указанного поставщика. Указанный поставщик должен быть зарегистрирован в списке поставщиков безопасности.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Параметры:
-
algorithm- имя запрашиваемого алгоритма ключа. См. раздел KeyFactory в Спецификации Java Security Standard Algorithm Names для получения информации об именах стандартных алгоритмов. -
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 Security Standard Algorithm Names для получения информации об именах стандартных алгоритмов. -
provider- поставщик. - Возвращает:
- новый объект
KeyFactory - Исключения:
-
IllegalArgumentException- если указанный поставщик являетсяnull -
NoSuchAlgorithmException- если реализацияKeyFactorySpiдля указанного алгоритма недоступна от указанного объектаProvider -
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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/security/KeyFactory.html