Spec-Zone.ru › OpenJDK 21

Класс 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 алгоритмы:

  • DiffieHellman
  • DSA
  • RSA
Эти алгоритмы описаны в разделе KeyFactory спецификации Java Security Standard Algorithm Names. Обратитесь к документации релиза вашей реализации, чтобы узнать, поддерживаются ли другие алгоритмы.
С:
1.2
См. также:
  • Key
  • PublicKey
  • PrivateKey
  • KeySpec
  • DSAPublicKeySpec
  • X509EncodedKeySpec

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

KeyFactory(KeyFactorySpi keyFacSpi, Provider provider, String algorithm)
Модификатор Конструктор Описание
protected
Создает объект KeyFactory.

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

Модификатор и тип Метод Описание
final PrivateKey generatePrivate(KeySpec keySpec)
Генерирует объект закрытого ключа из предоставленной спецификации ключа (материала ключа).
final PublicKey generatePublic(KeySpec keySpec)
Генерирует объект открытого ключа из предоставленной спецификации ключа (материала ключа).
final String getAlgorithm()
Возвращает имя алгоритма, связанного с этим KeyFactory.
static KeyFactory getInstance(String algorithm)
Возвращает объект KeyFactory, который преобразует открытые/закрытые ключи указанного алгоритма.
static KeyFactory getInstance(String algorithm, String provider)
Возвращает объект KeyFactory, который преобразует открытые/закрытые ключи указанного алгоритма.
static KeyFactory getInstance(String algorithm, Provider provider)
Возвращает объект KeyFactory, который преобразует открытые/закрытые ключи указанного алгоритма.
final <T extends KeySpec>
T
getKeySpec(Key key, Class<T> keySpec)
Возвращает спецификацию (материал ключа) данного объекта ключа.
final Provider getProvider()
Возвращает поставщика этого объекта фабрики ключей.
final 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.preferred Security, чтобы определить предпочтительный порядок поставщиков для указанного алгоритма. Это может отличаться от порядка поставщиков, возвращаемого методом Security.getProviders().
Параметры:
algorithm - имя запрашиваемого алгоритма ключа. См. раздел KeyFactory в Спецификации стандартных имён алгоритмов Java Security для получения информации о стандартных именах алгоритмов.
Возвращает:
новый объект 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 для получения информации о стандартных именах алгоритмов.
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 от указанного поставщика. Обратите внимание, что указанному поставщику не нужно быть зарегистрированным в списке поставщиков.

Параметры:
algorithm - имя запрашиваемого алгоритма ключа. См. раздел KeyFactory в Спецификации стандартных имён алгоритмов Java Security для получения информации о стандартных именах алгоритмов.
provider - поставщик.
Возвращает:
новый объект KeyFactory
Исключения:
IllegalArgumentException - если указанный поставщик null
NoSuchAlgorithmException - если реализация KeyFactorySpi для указанного алгоритма недоступна от указанного объекта Provider
NullPointerException - если algorithm является null
С тех пор как:
1.4
См. также:
  • Provider

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, 2023, 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/21/docs/api/java.base/java/security/KeyFactory.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API