Класс 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:
DiffieHellmanDSAECRSARSASSA-PSSX25519
- Начиная с версии:
- 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 |
Преобразует объект ключа, поставщик которого может быть неизвестным или потенциально ненадёжным, в соответствующий объект ключа этой фабрики ключей. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Показывает, равен ли другой объект этому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии. Финализация объявлена устаревшей и подлежит удалению в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ждать, пока он не будет разбужен, обычно посредством уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ждать, пока он не будет разбужен, обычно посредством уведомления или прерывания, либо пока не истечёт заданное время. |
final void |
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. - Возвращает:
- новый объект
KeyFactory - Выбрасывает:
-
NoSuchAlgorithmException— если ни одинProviderне поддерживает реализациюKeyFactorySpiдля указанного алгоритма -
NullPointerException— еслиalgorithmимеет значениеnull - Внешние спецификации
- См. также:
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 - Внешние спецификации
- См. также:
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
- Внешние спецификации
- См. также:
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.