Класс KDF
public final class KDF extends Object
Объекты KDF создаются с помощью семейства методов getInstance.
В классе есть два метода выработки ключа: deriveKey и deriveData. Метод deriveKey принимает имя алгоритма и возвращает объект SecretKey с указанным алгоритмом. Метод deriveData возвращает массив байтов с необработанными данными.
Пример использования API:
KDF kdfHkdf = KDF.getInstance("HKDF-SHA256");
AlgorithmParameterSpec derivationSpec =
HKDFParameterSpec.ofExtract()
.addIKM(ikm)
.addSalt(salt).thenExpand(info, 32);
SecretKey sKey = kdfHkdf.deriveKey("AES", derivationSpec);
Параллельный доступ
Если в документации реализации не указано иное, методы, определённые в этом классе, не являются потокобезопасными. Несколько потоков, которым необходимо одновременно обращаться к одному объекту, должны синхронизироваться между собой и обеспечивать необходимую блокировку. Нескольким потокам, каждый из которых работает с отдельным объектом, синхронизация не требуется.Отложенный выбор провайдера
Если при вызове одного из методовgetInstance провайдер не указан, реализация откладывает выбор провайдера до вызова метода deriveKey или deriveData. Это называется отложенным выбором провайдера. Основная причина такого поведения — убедиться, что выбранный провайдер может обрабатывать ключевой материал, передаваемый этим методам. Например, ключевой материал может находиться на аппаратном устройстве, с которым может работать только определённый провайдер KDF. Метод
getInstance возвращает объект KDF, если существует хотя бы один зарегистрированный провайдер безопасности, реализующий алгоритм и поддерживающий необязательные параметры. В процессе отложенного выбора провайдера выполняется перебор списка зарегистрированных провайдеров безопасности, начиная с наиболее предпочтительного Provider. Выбирается первый провайдер, поддерживающий указанный алгоритм, необязательные параметры и ключевой материал. Если метод getProviderName или getParameters вызывается до методов deriveKey или deriveData, выбирается первый провайдер, поддерживающий алгоритм KDF и необязательные KDFParameters. Этот провайдер может не поддерживать ключевой материал, который впоследствии передаётся методам deriveKey или deriveData. Поэтому рекомендуется не вызывать методы getProviderName или getParameters до выполнения операции выработки ключа. После выбора провайдера его нельзя изменить.
- Начиная с:
- 25
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
byte[] |
deriveData |
Вырабатывает ключ и возвращает необработанные данные в виде массива байтов. |
SecretKey |
deriveKey |
Вырабатывает ключ и возвращает его в виде объекта SecretKey. |
String |
getAlgorithm() |
Возвращает имя алгоритма этого объекта KDF. |
static KDF |
getInstance |
Возвращает объект KDF, реализующий указанный алгоритм. |
static KDF |
getInstance |
Возвращает объект KDF, реализующий указанный алгоритм от указанного провайдера безопасности. |
static KDF |
getInstance |
Возвращает объект KDF, реализующий указанный алгоритм от указанного провайдера безопасности. |
static KDF |
getInstance |
Возвращает объект KDF, реализующий указанный алгоритм и инициализированный указанными параметрами. |
static KDF |
getInstance |
Возвращает объект KDF, реализующий указанный алгоритм от указанного провайдера и инициализированный указанными параметрами. |
static KDF |
getInstance |
Возвращает объект KDF, реализующий указанный алгоритм от указанного провайдера и инициализированный указанными параметрами. |
KDFParameters |
getParameters() |
Возвращает KDFParameters, используемые с этим объектом KDF. |
String |
getProviderName() |
Возвращает имя провайдера. |
Подробное описание методов
getAlgorithm
public String getAlgorithm()
KDF.- Возвращает:
- имя алгоритма этого объекта
KDF
getProviderName
public String getProviderName()
- Возвращает:
- имя провайдера
- См. также:
getParameters
public KDFParameters getParameters()
KDFParameters, используемые с этим объектом KDF. Возвращённые параметры могут совпадать с параметрами, использованными для инициализации этого объекта KDF, либо содержать дополнительные значения параметров по умолчанию или случайные значения, используемые базовым алгоритмом KDF. Если необходимые параметры не были указаны и могут быть сгенерированы объектом KDF, возвращаются сгенерированные параметры; в противном случае возвращается null.
- Возвращает:
- параметры, используемые с этим объектом
KDF, илиnull - См. также:
getInstance
public static KDF getInstance(String algorithm) throws NoSuchAlgorithmException
KDF, реализующий указанный алгоритм.- Примечание по реализации:
- Эталонная реализация JDK дополнительно использует свойство
jdk.security.provider.preferredSecurityдля определения предпочтительного порядка провайдеров для указанного алгоритма. Этот порядок может отличаться от порядка провайдеров, возвращаемых методомSecurity.getProviders(). - Параметры:
-
algorithm— используемый алгоритм выработки ключа. Сведения о стандартных именах алгоритмов KDF см. в разделеKDFспецификации стандартных имён алгоритмов безопасности Java. - Возвращает:
- объект
KDF - Выбрасывает:
-
NoSuchAlgorithmException— если ни одинProviderне поддерживает реализациюKDFдля указанного алгоритма -
NullPointerException— еслиalgorithmимеет значениеnull - Внешние спецификации
- См. также:
getInstance
public static KDF getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
KDF, реализующий указанный алгоритм от указанного провайдера безопасности. Указанный провайдер должен быть зарегистрирован в списке провайдеров безопасности.- Параметры:
-
algorithm— используемый алгоритм выработки ключа. Сведения о стандартных именах алгоритмов KDF см. в разделеKDFспецификации стандартных имён алгоритмов безопасности Java. -
provider— провайдер, используемый для выработки этого ключа - Возвращает:
- объект
KDF - Выбрасывает:
-
NoSuchAlgorithmException— если указанный провайдер не поддерживает указанный алгоритмKDF -
NoSuchProviderException— если указанный провайдер не зарегистрирован в списке провайдеров безопасности -
NullPointerException— еслиalgorithmилиproviderимеет значениеnull - Внешние спецификации
getInstance
public static KDF getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
KDF, реализующий указанный алгоритм от указанного провайдера безопасности.- Параметры:
-
algorithm— используемый алгоритм выработки ключа. Сведения о стандартных именах алгоритмов KDF см. в разделеKDFспецификации стандартных имён алгоритмов безопасности Java. -
provider— провайдер, используемый для выработки этого ключа - Возвращает:
- объект
KDF - Выбрасывает:
-
NoSuchAlgorithmException— если указанный провайдер не поддерживает указанный алгоритмKDF -
NullPointerException— еслиalgorithmилиproviderимеет значениеnull - Внешние спецификации
getInstance
public static KDF getInstance(String algorithm, KDFParameters kdfParameters) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException
KDF, реализующий указанный алгоритм и инициализированный указанными параметрами.- Примечание по реализации:
- Эталонная реализация JDK дополнительно использует свойство
jdk.security.provider.preferredSecurityдля определения предпочтительного порядка провайдеров для указанного алгоритма. Этот порядок может отличаться от порядка провайдеров, возвращаемых методомSecurity.getProviders(). - Параметры:
-
algorithm— используемый алгоритм выработки ключа. Сведения о стандартных именах алгоритмов KDF см. в разделеKDFспецификации стандартных имён алгоритмов безопасности Java. -
kdfParameters— объектKDFParameters, используемый для настройки алгоритма выработки ключа, илиnull, если параметры не указаны - Возвращает:
- объект
KDF - Выбрасывает:
-
NoSuchAlgorithmException— если ни одинProviderне поддерживает реализациюKDFдля указанного алгоритма -
InvalidAlgorithmParameterException— если хотя бы одинProviderподдерживает реализациюKDFдля указанного алгоритма, но ни один из них не поддерживает указанные параметры -
NullPointerException— еслиalgorithmимеет значениеnull - Внешние спецификации
- См. также:
getInstance
public static KDF getInstance(String algorithm, KDFParameters kdfParameters, String provider) throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException
KDF, реализующий указанный алгоритм от указанного провайдера и инициализированный указанными параметрами. Указанный провайдер должен быть зарегистрирован в списке провайдеров безопасности.- Параметры:
-
algorithm— используемый алгоритм выработки ключа. Сведения о стандартных именах алгоритмов KDF см. в разделеKDFспецификации стандартных имён алгоритмов безопасности Java. -
kdfParameters— объектKDFParameters, используемый для настройки алгоритма выработки ключа, илиnull, если параметры не указаны -
provider— провайдер, используемый для выработки этого ключа - Возвращает:
- объект
KDF - Выбрасывает:
-
NoSuchAlgorithmException— если указанный провайдер не поддерживает указанный алгоритмKDF -
NoSuchProviderException— если указанный провайдер не зарегистрирован в списке провайдеров безопасности -
InvalidAlgorithmParameterException— если указанный провайдер поддерживает указанный алгоритмKDF, но не поддерживает указанные параметры -
NullPointerException— еслиalgorithmилиproviderимеет значениеnull - Внешние спецификации
getInstance
public static KDF getInstance(String algorithm, KDFParameters kdfParameters, Provider provider) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException
KDF, реализующий указанный алгоритм от указанного провайдера и инициализированный указанными параметрами.- Параметры:
-
algorithm— используемый алгоритм выработки ключа. Сведения о стандартных именах алгоритмов KDF см. в разделеKDFспецификации стандартных имён алгоритмов безопасности Java. -
kdfParameters— объектKDFParameters, используемый для настройки алгоритма выработки ключа, илиnull, если параметры не указаны -
provider— провайдер, используемый для выработки этого ключа - Возвращает:
- объект
KDF - Выбрасывает:
-
NoSuchAlgorithmException— если указанный провайдер не поддерживает указанный алгоритмKDF -
InvalidAlgorithmParameterException— если указанный провайдер поддерживает указанный алгоритмKDF, но не поддерживает указанные параметры -
NullPointerException— еслиalgorithmилиproviderимеет значениеnull - Внешние спецификации
deriveKey
public SecretKey deriveKey(String alg, AlgorithmParameterSpec derivationSpec) throws InvalidAlgorithmParameterException, NoSuchAlgorithmException
SecretKey.- Параметры:
-
alg— алгоритм результирующего объектаSecretKey. Сведения о стандартных именах алгоритмов секретных ключей см. в разделе «Алгоритмы SecretKey» спецификации стандартных имён алгоритмов безопасности Java. -
derivationSpec— объект, описывающий входные данные функции выработки ключа - Возвращает:
- выработанный ключ
- Выбрасывает:
-
InvalidAlgorithmParameterException— если информация, содержащаяся вderivationSpec, недействительна или сочетаниеalgиderivationSpecприводит к недопустимому результату -
NoSuchAlgorithmException— еслиalgпуст или недействителен -
NullPointerException— еслиalgилиderivationSpecравен null - Внешние спецификации
- См. также:
deriveData
public byte[] deriveData(AlgorithmParameterSpec derivationSpec) throws InvalidAlgorithmParameterException
- Параметры:
-
derivationSpec— объект, описывающий входные данные функции выработки ключа - Возвращает:
- выработанный ключ в виде необработанных байтов
- Выбрасывает:
-
InvalidAlgorithmParameterException— если информация, содержащаяся вderivationSpec, недействительна -
UnsupportedOperationException— если выработанный ключевой материал нельзя извлечь -
NullPointerException— еслиderivationSpecравен null - См. также:
© 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/javax/crypto/KDF.html