Класс 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
- Since:
- 1.2
- See Also:
-
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,
Provider provider) Возвращает объект KeyFactory, который преобразует открытые/закрытые ключи указанного алгоритма. |
static KeyFactory |
getInstance(String algorithm,
String 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.
- Parameters:
-
keyFacSpi- делегат -
provider- поставщик -
algorithm- имя алгоритма, связанное с этимKeyFactory
Методы
getInstance
public static KeyFactory getInstance(String algorithm)
throws NoSuchAlgorithmException
Возвращает объект KeyFactory, который преобразует открытые/закрытые ключи указанного алгоритма.
Этот метод проходит по списку зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного. Возвращается новый объект KeyFactory, инкапсулирующий реализацию KeyFactorySpi из первого поставщика, который поддерживает указанный алгоритм.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Parameters:
-
algorithm- имя запрашиваемого алгоритма ключа. Сведения о стандартных именах алгоритмов см. в разделе KeyFactory документации по стандартным именам алгоритмов Java Cryptography Architecture - Returns:
- новый объект KeyFactory.
- Throws:
-
NoSuchAlgorithmException- если ни один поставщик не поддерживает реализацию KeyFactorySpi для указанного алгоритма. - See Also:
Provider
getInstance
public static KeyFactory getInstance(String algorithm,
String provider)
throws NoSuchAlgorithmException,
NoSuchProviderException
Возвращает объект KeyFactory, который преобразует открытые/закрытые ключи указанного алгоритма.
Возвращается новый объект KeyFactory, инкапсулирующий реализацию KeyFactorySpi от указанного поставщика. Указанный поставщик должен быть зарегистрирован в списке поставщиков безопасности.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Parameters:
-
algorithm- имя запрашиваемого алгоритма ключа. Сведения о стандартных именах алгоритмов см. в разделе KeyFactory документации по стандартным именам алгоритмов Java Cryptography Architecture -
provider- имя поставщика. - Returns:
- новый объект KeyFactory.
- Throws:
-
NoSuchAlgorithmException- если реализация KeyFactorySpi для указанного алгоритма недоступна от указанного поставщика. -
NoSuchProviderException- если указанный поставщик не зарегистрирован в списке поставщиков безопасности. -
IllegalArgumentException- если имя поставщика null или пустое. - See Also:
Provider
getInstance
public static KeyFactory getInstance(String algorithm,
Provider provider)
throws NoSuchAlgorithmException
Возвращает объект KeyFactory, который преобразует открытые/закрытые ключи указанного алгоритма.
Возвращается новый объект KeyFactory, инкапсулирующий реализацию KeyFactorySpi от указанного объекта Provider. Обратите внимание, что указанный объект Provider не обязательно должен быть зарегистрирован в списке поставщиков.
- Parameters:
-
algorithm- имя запрашиваемого алгоритма ключа. Сведения о стандартных именах алгоритмов см. в разделе KeyFactory документации по стандартным именам алгоритмов Java Cryptography Architecture -
provider- поставщик. - Returns:
- новый объект KeyFactory.
- Throws:
-
NoSuchAlgorithmException- если реализация KeyFactorySpi для указанного алгоритма недоступна от указанного объекта Provider. -
IllegalArgumentException- если указанный поставщик null. - Since:
- 1.4
- See Also:
Provider
getProvider
public final Provider getProvider()
Возвращает поставщика этого объекта завода ключей.
- Returns:
- поставщик этого объекта завода ключей
getAlgorithm
public final String getAlgorithm()
Получает имя алгоритма, связанного с этим KeyFactory.
- Returns:
- имя алгоритма, связанного с этим
KeyFactory
generatePublic
public final PublicKey generatePublic(KeySpec keySpec)
throws InvalidKeySpecException
Генерирует объект открытого ключа из предоставленной спецификации ключа (материала ключа).
- Parameters:
-
keySpec- спецификация (материал ключа) открытого ключа. - Returns:
- открытый ключ.
- Throws:
-
InvalidKeySpecException- если предоставленная спецификация ключа не подходит для создания открытого ключа этим заводом ключей.
generatePrivate
public final PrivateKey generatePrivate(KeySpec keySpec)
throws InvalidKeySpecException
Генерирует объект закрытого ключа из предоставленной спецификации ключа (материала ключа).
- Parameters:
-
keySpec- спецификация (материал ключа) закрытого ключа. - Returns:
- закрытый ключ.
- Throws:
-
InvalidKeySpecException- если предоставленная спецификация ключа не подходит для создания закрытого ключа этим заводом ключей.
getKeySpec
public final <T extends KeySpec> T getKeySpec(Key key,
Class<T> keySpec)
throws InvalidKeySpecException
Возвращает спецификацию (материал ключа) данного объекта ключа. keySpec идентифицирует класс спецификации, в котором должен быть возвращен материал ключа. Например, он может быть DSAPublicKeySpec.class, чтобы указать, что материал ключа должен быть возвращён в экземпляре класса DSAPublicKeySpec.
- Type Parameters:
-
T- тип спецификации ключа, который должен быть возвращён - Parameters:
-
key- ключ. -
keySpec- класс спецификации, в котором должен быть возвращен материал ключа. - Returns:
- базовая спецификация ключа (материал ключа) в экземпляре запрошенного класса спецификации.
- Throws:
-
InvalidKeySpecException- если запрошенная спецификация ключа не подходит для данного ключа или данный ключ не может быть обработан (например, у данного ключа неизвестный алгоритм или формат).
translateKey
public final Key translateKey(Key key)
throws InvalidKeyException
Преобразует объект ключа, чей поставщик может быть неизвестен или потенциально недоверен, в соответствующий объект ключа этого завода ключей.
- Parameters:
-
key- ключ, чей поставщик неизвестен или потенциально недоверен. - Returns:
- преобразованный ключ.
- Throws:
-
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.