Spec-Zone.ru › OpenJDK 25

Класс KDF

java.lang.Object
javax.crypto.KDF
public final class KDF extends Object
Этот класс предоставляет функциональность функции выработки ключей (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 до выполнения операции выработки ключа. После выбора провайдера его нельзя изменить.

Начиная с:
25
См. также:
  • KDFParameters
  • SecretKey

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

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

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

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

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

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.preferred Security для определения предпочтительного порядка провайдеров для указанного алгоритма. Этот порядок может отличаться от порядка провайдеров, возвращаемых методом Security.getProviders().
Параметры:
algorithm — используемый алгоритм выработки ключа. Сведения о стандартных именах алгоритмов KDF см. в разделе KDF спецификации стандартных имён алгоритмов безопасности Java.
Возвращает:
объект KDF
Выбрасывает:
NoSuchAlgorithmException — если ни один Provider не поддерживает реализацию KDF для указанного алгоритма
NullPointerException — если algorithm имеет значение null
Внешние спецификации
  • Стандартные имена алгоритмов безопасности Java
См. также:
  • Отложенный выбор провайдера

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

getInstance

public static KDF getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
Возвращает объект KDF, реализующий указанный алгоритм от указанного провайдера безопасности.
Параметры:
algorithm — используемый алгоритм выработки ключа. Сведения о стандартных именах алгоритмов KDF см. в разделе KDF спецификации стандартных имён алгоритмов безопасности Java.
provider — провайдер, используемый для выработки этого ключа
Возвращает:
объект KDF
Выбрасывает:
NoSuchAlgorithmException — если указанный провайдер не поддерживает указанный алгоритм KDF
NullPointerException — если algorithm или provider имеет значение null
Внешние спецификации
  • Стандартные имена алгоритмов безопасности Java

getInstance

public static KDF getInstance(String algorithm, KDFParameters kdfParameters) throws NoSuchAlgorithmException, InvalidAlgorithmParameterException
Возвращает объект KDF, реализующий указанный алгоритм и инициализированный указанными параметрами.
Примечание по реализации:
Эталонная реализация JDK дополнительно использует свойство jdk.security.provider.preferred Security для определения предпочтительного порядка провайдеров для указанного алгоритма. Этот порядок может отличаться от порядка провайдеров, возвращаемых методом Security.getProviders().
Параметры:
algorithm — используемый алгоритм выработки ключа. Сведения о стандартных именах алгоритмов KDF см. в разделе KDF спецификации стандартных имён алгоритмов безопасности Java.
kdfParameters — объект KDFParameters, используемый для настройки алгоритма выработки ключа, или null, если параметры не указаны
Возвращает:
объект KDF
Выбрасывает:
NoSuchAlgorithmException — если ни один Provider не поддерживает реализацию KDF для указанного алгоритма
InvalidAlgorithmParameterException — если хотя бы один Provider поддерживает реализацию KDF для указанного алгоритма, но ни один из них не поддерживает указанные параметры
NullPointerException — если algorithm имеет значение null
Внешние спецификации
  • Стандартные имена алгоритмов безопасности Java
См. также:
  • Отложенный выбор провайдера

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

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

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

deriveData

public byte[] deriveData(AlgorithmParameterSpec derivationSpec) throws InvalidAlgorithmParameterException
Вырабатывает ключ и возвращает необработанные данные в виде массива байтов.
Параметры:
derivationSpec — объект, описывающий входные данные функции выработки ключа
Возвращает:
выработанный ключ в виде необработанных байтов
Выбрасывает:
InvalidAlgorithmParameterException — если информация, содержащаяся в derivationSpec, недействительна
UnsupportedOperationException — если выработанный ключевой материал нельзя извлечь
NullPointerException — если derivationSpec равен null
См. также:
  • Отложенный выбор провайдера

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/javax/crypto/KDF.html

Spec-Zone.ru

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