Spec-Zone.ru › OpenJDK 27

Класс 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
  • EC
  • RSA
  • RSASSA-PSS
  • X25519
Описание этих алгоритмов приведено в разделе KeyFactory спецификации стандартных имён алгоритмов безопасности Java. Сведения о поддержке других алгоритмов см. в документации к выпуску вашей реализации.
Начиная с версии:
1.2
Внешние спецификации
  • Стандартные имена алгоритмов безопасности Java
См. также:
  • 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)
Преобразует объект ключа, поставщик которого может быть неизвестным или потенциально ненадёжным, в соответствующий объект ключа этой фабрики ключей.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Показывает, равен ли другой объект этому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии.
Финализация объявлена устаревшей и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ждать, пока он не будет разбужен, обычно посредством уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ждать, пока он не будет разбужен, обычно посредством уведомления или прерывания, либо пока не истечёт заданное время.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ждать, пока он не будет разбужен, обычно посредством уведомления или прерывания, либо пока не истечёт заданное время.

Подробное описание конструкторов

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.
Возвращает:
новый объект KeyFactory
Выбрасывает:
NoSuchAlgorithmException — если ни один Provider не поддерживает реализацию KeyFactorySpi для указанного алгоритма
NullPointerException — если algorithm имеет значение null
Внешние спецификации
  • Стандартные имена алгоритмов безопасности Java
См. также:
  • Provider

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
Внешние спецификации
  • Стандартные имена алгоритмов безопасности Java
См. также:
  • Provider

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
Внешние спецификации
  • Стандартные имена алгоритмов безопасности Java
См. также:
  • 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 — если заданный ключ не может быть обработан этой фабрикой ключей.

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

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