Класс KeyFactory
- java.lang.Object
-
- java.security.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
- См. также:
-
Key,PublicKey,PrivateKey,KeySpec,DSAPublicKeySpec,X509EncodedKeySpec
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected | KeyFactory(KeyFactorySpi keyFacSpi,
Provider provider,
String algorithm) | Создает объект KeyFactory. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
PrivateKey | generatePrivate(KeySpec keySpec) | Генерирует объект закрытого ключа из предоставленной спецификации ключа (ключевого материала). |
PublicKey | generatePublic(KeySpec keySpec) | Генерирует объект открытого ключа из предоставленной спецификации ключа (ключевого материала). |
String | getAlgorithm() | Получает имя алгоритма, связанного с этим |
static KeyFactory | getInstance(String algorithm) | Возвращает объект KeyFactory, который преобразует открытые/закрытые ключи указанного алгоритма. |
static KeyFactory | getInstance(String algorithm,
String provider) | Возвращает объект KeyFactory, который преобразует открытые/закрытые ключи указанного алгоритма. |
static KeyFactory | getInstance(String algorithm,
Provider provider) | Возвращает объект KeyFactory, который преобразует открытые/закрытые ключи указанного алгоритма. |
<T extends KeySpec> | getKeySpec(Key key,
Class<T> keySpec) | Возвращает спецификацию (ключевой материал) данного объекта ключа. |
Provider | getProvider() | Возвращает поставщика этого объекта завода ключей. |
Key | translateKey(Key key) | Преобразует объект ключа, поставщик которого может быть неизвестен или потенциально небезопасен, в соответствующий объект ключа этого завода ключей. |
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
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 Specification. - Возвращает:
- новый объект
KeyFactory - Исключения:
-
NoSuchAlgorithmException- если ни одинProviderне поддерживает реализациюKeyFactorySpiдля указанного алгоритма -
NullPointerException- еслиalgorithmявляетсяnull - См. также:
Provider
getInstance
public static KeyFactory getInstance(String algorithm,
String provider)
throws NoSuchAlgorithmException,
NoSuchProviderException Возвращает объект KeyFactory, который преобразует открытые/закрытые ключи указанного алгоритма.
Возвращается новый объект KeyFactory, инкапсулирующий реализацию KeyFactorySpi от указанного поставщика. Указанный поставщик должен быть зарегистрирован в списке поставщиков безопасности.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Параметры:
-
algorithm- имя запрашиваемого алгоритма ключа. Сведения о стандартных именах алгоритмов см. в разделе KeyFactory спецификации Java Security Standard Algorithm Names Specification. -
provider- имя поставщика. - Возвращает:
- новый объект
KeyFactory - Исключения:
-
IllegalArgumentException- если имя поставщика являетсяnullили пустым -
NoSuchAlgorithmException- если реализацияKeyFactorySpiдля указанного алгоритма недоступна от указанного поставщика -
NoSuchProviderException- если указанный поставщик не зарегистрирован в списке поставщиков безопасности -
NullPointerException- еслиalgorithmявляетсяnull - См. также:
Provider
getInstance
public static KeyFactory getInstance(String algorithm,
Provider provider)
throws NoSuchAlgorithmException Возвращает объект KeyFactory, который преобразует открытые/закрытые ключи указанного алгоритма.
Возвращается новый объект KeyFactory, инкапсулирующий реализацию KeyFactorySpi из указанного объекта Provider. Обратите внимание, что указанный объект Provider не обязательно должен быть зарегистрирован в списке поставщиков.
- Параметры:
-
algorithm- имя запрашиваемого алгоритма ключа. Сведения о стандартных именах алгоритмов см. в разделе KeyFactory спецификации Java Security Standard Algorithm Names Specification. -
provider- поставщик. - Возвращает:
- новый объект
KeyFactory - Исключения:
-
IllegalArgumentException- если указанный поставщик являетсяnull -
NoSuchAlgorithmException- если реализацияKeyFactorySpiдля указанного алгоритма недоступна от указанного объектаProvider -
NullPointerException- еслиalgorithmявляетсяnull - С момента:
- 1.4
- См. также:
Provider
getProvider
public final Provider getProvider()
Возвращает поставщика этого объекта key factory.
- Возвращает:
- поставщик этого объекта key factory
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, 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/KeyFactory.html