Класс KDF
public final class KDF extends Object
KDF — это предварительный API платформы Java. Объекты класса 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 до выполнения операции вывода ключа. После выбора провайдера его изменить нельзя.
- С:
- 24
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
byte[] |
deriveData |
Выводит ключ, возвращает сырые данные в виде массива байтов. |
SecretKey |
deriveKey |
Выводит ключ, возвращает его как объект SecretKey. |
String |
getAlgorithm() |
Возвращает имя алгоритма этого объекта KDF. |
static KDFPREVIEW |
getInstance |
Возвращает объект KDF, реализующий указанный алгоритм. |
static KDFPREVIEW |
getInstance |
Возвращает объект KDF, реализующий указанный алгоритм от указанного провайдера безопасности. |
static KDFPREVIEW |
getInstance |
Возвращает объект KDF, реализующий указанный алгоритм от указанного провайдера безопасности. |
static KDFPREVIEW |
getInstance |
Возвращает объект KDF, реализующий указанный алгоритм и инициализированный указанными параметрами. |
static KDFPREVIEW |
getInstance |
Возвращает объект KDF, реализующий указанный алгоритм от указанного провайдера и инициализированный указанными параметрами. |
static KDFPREVIEW |
getInstance |
Возвращает объект KDF, реализующий указанный алгоритм от указанного провайдера и инициализированный указанными параметрами. |
KDFParametersPREVIEW |
getParameters() |
Возвращает используемый KDFParameters с этим объектом KDF. |
String |
getProviderName() |
Возвращает имя провайдера. |
Подробное описание методов
getAlgorithm
public String getAlgorithm()
KDF.- Возвращает:
- имя алгоритма этого объекта
KDF
getProviderName
public String getProviderName()
- Возвращает:
- имя поставщика
- См. также:
getParameters
public KDFParametersPREVIEW getParameters()
KDFParameters, используемые с этим объектом KDF. Возвращаемые параметры могут быть теми же, что и при инициализации этого объекта KDF, или могут содержать дополнительные значения параметров по умолчанию или случайные значения параметров, используемые алгоритмом KDF. Если необходимые параметры не были предоставлены и могут быть сгенерированы объектом KDF, генерируемые параметры возвращаются; в противном случае возвращается null.
- Возвращает:
- параметры, используемые с этим объектом
KDF, илиnull - См. также:
getInstance
public static KDFPREVIEW getInstance(String algorithm) throws NoSuchAlgorithmException
KDF, реализующий указанный алгоритм.- Примечание к реализации:
- Реализация JDK дополнительно использует свойство
jdk.security.provider.preferredSecurity, чтобы определить предпочтительный порядок поставщиков для указанного алгоритма. Это может отличаться от порядка поставщиков, возвращаемогоSecurity.getProviders(). - Параметры:
-
algorithm- алгоритм вывода ключа для использования. См. разделKDFв Спецификации имен стандартных алгоритмов безопасности Java для получения информации о стандартных именах алгоритмов KDF. - Возвращает:
- объект
KDF - Исключения:
-
NoSuchAlgorithmException- если ни одинProviderне поддерживает реализациюKDFдля указанного алгоритма -
NullPointerException- еслиalgorithmявляетсяnull - См. также:
getInstance
public static KDFPREVIEW getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
KDF, реализующий указанный алгоритм от указанного поставщика безопасности. Указанный поставщик должен быть зарегистрирован в списке поставщиков безопасности.- Параметры:
-
algorithm- алгоритм вывода ключа для использования. См. разделKDFв Спецификации имен стандартных алгоритмов безопасности Java для получения информации о стандартных именах алгоритмов KDF. -
provider- поставщик для использования в этом выводе ключа - Возвращает:
- объект
KDF - Исключения:
-
NoSuchAlgorithmException- если указанный поставщик не поддерживает указанный алгоритмKDF -
NoSuchProviderException- если указанный поставщик не зарегистрирован в списке поставщиков безопасности -
NullPointerException- еслиalgorithmилиproviderявляетсяnull
getInstance
public static KDFPREVIEW getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
KDF, реализующий указанный алгоритм от указанного поставщика безопасности.- Параметры:
-
algorithm- алгоритм вывода ключа для использования. См. разделKDFв Спецификации имен стандартных алгоритмов безопасности Java для получения информации о стандартных именах алгоритмов KDF. -
provider- поставщик для использования в этом выводе ключа - Возвращает:
- объект
KDF - Исключения:
-
NoSuchAlgorithmException- если указанный поставщик не поддерживает указанный алгоритмKDF -
NullPointerException- еслиalgorithmилиproviderявляетсяnull
getInstance
public static KDFPREVIEW getInstance(String algorithm, KDFParametersPREVIEW kdfParameters) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException
KDF, реализующий указанный алгоритм и инициализированный указанными параметрами.- Примечание к реализации:
- Реализация JDK дополнительно использует свойство
jdk.security.provider.preferredSecurity, чтобы определить предпочтительный порядок поставщиков для указанного алгоритма. Это может отличаться от порядка поставщиков, возвращаемогоSecurity.getProviders(). - Параметры:
-
algorithm- алгоритм вывода ключа для использования. См. разделKDFв Спецификации имен стандартных алгоритмов безопасности Java для получения информации о стандартных именах алгоритмов KDF. -
kdfParameters-KDFParameters, используемый для конфигурации алгоритма вывода, илиnull, если параметры не предоставлены - Возвращает:
- объект
KDF - Исключения:
-
NoSuchAlgorithmException- если ни одинProviderне поддерживает реализациюKDFдля указанного алгоритма -
InvalidAlgorithmParameterException- если по крайней мере одинProviderподдерживает реализациюKDFдля указанного алгоритма, но ни один из них не поддерживает указанные параметры -
NullPointerException- еслиalgorithmявляетсяnull - См. также:
getInstance
public static KDFPREVIEW getInstance(String algorithm, KDFParametersPREVIEW kdfParameters, String provider) throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException
KDF, реализующий указанный алгоритм от указанного поставщика и инициализированный указанными параметрами. Указанный поставщик должен быть зарегистрирован в списке поставщиков безопасности.- Параметры:
-
algorithm- алгоритм вывода ключа для использования. См. разделKDFв Спецификации имен стандартных алгоритмов безопасности Java для получения информации о стандартных именах алгоритмов KDF. -
kdfParameters-KDFParameters, используемый для конфигурации алгоритма вывода, илиnull, если параметры не предоставлены -
provider- поставщик для использования в этом выводе ключа - Возвращает:
- объект
KDF - Исключения:
-
NoSuchAlgorithmException- если указанный поставщик не поддерживает указанный алгоритмKDF -
NoSuchProviderException- если указанный поставщик не зарегистрирован в списке поставщиков безопасности -
InvalidAlgorithmParameterException- если указанный поставщик поддерживает указанный алгоритмKDF, но не поддерживает указанные параметры -
NullPointerException- еслиalgorithmилиproviderявляетсяnull
getInstance
public static KDFPREVIEW getInstance(String algorithm, KDFParametersPREVIEW kdfParameters, Provider provider) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException
KDF, реализующий указанный алгоритм от указанного поставщика и инициализированный указанными параметрами.- Параметры:
-
algorithm- алгоритм вывода ключа для использования. См. разделKDFв Спецификации имен стандартных алгоритмов безопасности Java для получения информации о стандартных именах алгоритмов KDF. -
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 -
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://download.java.net/java/early_access/jdk24/docs/api/java.base/javax/crypto/KDF.html
KDFтолько при включенных предварительных функциях.