Spec-Zone.ru › OpenJDK 24

Класс KDF

java.lang.Object
javax.crypto.KDF
public final class KDF extends Object
KDF — это предварительный API платформы Java.
Программы могут использовать KDF только при включенных предварительных функциях.
Предварительные функции могут быть удалены в будущих релизах или обновлены до постоянных функций платформы Java.
Этот класс предоставляет функциональность функции вывода ключа (KDF), которая является криптографическим алгоритмом для вывода дополнительных ключей из входного ключевого материала (IKM) и (необязательно) других данных.

Объекты класса 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
См. также:
  • KDFParametersПРЕДПРОСМОТР
  • SecretKey

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

Модификатор и тип Метод Описание
byte[] deriveData(AlgorithmParameterSpec derivationSpec)
Выводит ключ, возвращает сырые данные в виде массива байтов.
SecretKey deriveKey(String alg, AlgorithmParameterSpec derivationSpec)
Выводит ключ, возвращает его как объект SecretKey.
String getAlgorithm()
Возвращает имя алгоритма этого объекта KDF.
static KDFPREVIEW getInstance(String algorithm)
Возвращает объект KDF, реализующий указанный алгоритм.
static KDFPREVIEW getInstance(String algorithm, String provider)
Возвращает объект KDF, реализующий указанный алгоритм от указанного провайдера безопасности.
static KDFPREVIEW getInstance(String algorithm, Provider provider)
Возвращает объект KDF, реализующий указанный алгоритм от указанного провайдера безопасности.
static KDFPREVIEW getInstance(String algorithm, KDFParametersPREVIEW kdfParameters)
Возвращает объект KDF, реализующий указанный алгоритм и инициализированный указанными параметрами.
static KDFPREVIEW getInstance(String algorithm, KDFParametersPREVIEW kdfParameters, String provider)
Возвращает объект KDF, реализующий указанный алгоритм от указанного провайдера и инициализированный указанными параметрами.
static KDFPREVIEW getInstance(String algorithm, KDFParametersPREVIEW kdfParameters, Provider provider)
Возвращает объект KDF, реализующий указанный алгоритм от указанного провайдера и инициализированный указанными параметрами.
KDFParametersPREVIEW getParameters()
Возвращает используемый KDFParameters с этим объектом KDF.
String getProviderName()
Возвращает имя провайдера.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

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

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.preferred Security, чтобы определить предпочтительный порядок поставщиков для указанного алгоритма. Это может отличаться от порядка поставщиков, возвращаемого 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.preferred Security, чтобы определить предпочтительный порядок поставщиков для указанного алгоритма. Это может отличаться от порядка поставщиков, возвращаемого 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

Spec-Zone.ru

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