Spec-Zone.ru › OpenJDK 27

Класс KEM

java.lang.Object
javax.crypto.KEM
public final class KEM extends Object
Этот класс предоставляет функциональность механизма инкапсуляции ключа (KEM). KEM можно использовать для защиты симметричных ключей с помощью асимметричной криптографии или криптографии с открытым ключом между двумя сторонами. Отправитель вызывает метод encapsulate для создания секретного ключа и сообщения инкапсуляции ключа, а получатель вызывает метод decapsulate, чтобы восстановить тот же секретный ключ из сообщения инкапсуляции ключа.

Метод getInstance создает новый объект KEM, реализующий указанный алгоритм.

Объект KEM неизменяем. Можно безопасно одновременно вызывать несколько методов newEncapsulator и newDecapsulator для одного и того же объекта KEM.

Если при создании объекта KEM в методе getInstance не указан поставщик, методы newEncapsulator и newDecapsulator могут возвращать инкапсуляторы или декапсуляторы от разных поставщиков. Выбранный поставщик зависит от параметров, переданных методам newEncapsulator или newDecapsulator: закрытого или открытого ключа и необязательного параметра AlgorithmParameterSpec. Методы KEM.Encapsulator.providerName() и KEM.Decapsulator.providerName() возвращают имя выбранного поставщика.

Объекты Encapsulator и Decapsulator также неизменяемы. Можно безопасно одновременно вызывать несколько методов encapsulate и decapsulate для одного и того же объекта Encapsulator или Decapsulator. Каждый вызов encapsulate создает новый общий секрет и сообщение инкапсуляции ключа.

Пример операции с использованием вымышленного алгоритма KEM ABC:

    // Receiver side
    KeyPairGenerator g = KeyPairGenerator.getInstance("ABC");
    KeyPair kp = g.generateKeyPair();
    publishKey(kp.getPublic());

    // Sender side
    KEM senderKEM = KEM.getInstance("ABC");
    PublicKey receiverPublicKey = retrieveKey();
    ABCKEMParameterSpec senderSpec = new ABCKEMParameterSpec(args);
    KEM.Encapsulator e = senderKEM.newEncapsulator(
            receiverPublicKey, senderSpec, null);
    KEM.Encapsulated enc = e.encapsulate();
    SecretKey senderSecret = enc.key();

    sendBytes(enc.encapsulation());
    sendBytes(enc.params());

    // Receiver side
    byte[] ciphertext = receiveBytes();
    byte[] params = receiveBytes();

    KEM receiverKEM = KEM.getInstance("ABC");
    AlgorithmParameters algParams =
            AlgorithmParameters.getInstance("ABC");
    algParams.init(params);
    ABCKEMParameterSpec receiverSpec =
            algParams.getParameterSpec(ABCKEMParameterSpec.class);
    KEM.Decapsulator d =
            receiverKEM.newDecapsulator(kp.getPrivate(), receiverSpec);
    SecretKey receiverSecret = d.decapsulate(ciphertext);

    // senderSecret and receiverSecret should now be equal.
Начиная с:
21

Краткое описание вложенных классов

Модификатор и тип Класс Описание
static final class  KEM.Decapsulator
Декапсулятор, созданный методом newDecapsulator(PrivateKey) на стороне получателя KEM.
static final class  KEM.Encapsulated
Этот класс определяет возвращаемое значение метода encapsulate механизма инкапсуляции ключа (KEM), включающее общий секрет (в виде SecretKey), сообщение инкапсуляции ключа и необязательные параметры.
static final class  KEM.Encapsulator
Инкапсулятор, созданный методом newEncapsulator(PublicKey) на стороне отправителя KEM.

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

Модификатор и тип Метод Описание
String getAlgorithm()
Возвращает имя алгоритма для этого объекта KEM.
static KEM getInstance(String algorithm)
Возвращает объект KEM, реализующий указанный алгоритм.
static KEM getInstance(String algorithm, String provider)
Возвращает объект KEM, реализующий указанный алгоритм от указанного поставщика средств безопасности.
static KEM getInstance(String algorithm, Provider provider)
Возвращает объект KEM, реализующий указанный алгоритм от указанного поставщика средств безопасности.
KEM.Decapsulator newDecapsulator(PrivateKey privateKey)
Создает декапсулятор KEM на стороне получателя KEM.
KEM.Decapsulator newDecapsulator(PrivateKey privateKey, AlgorithmParameterSpec spec)
Создает декапсулятор KEM на стороне получателя KEM.
KEM.Encapsulator newEncapsulator(PublicKey publicKey)
Создает инкапсулятор KEM на стороне отправителя KEM.
KEM.Encapsulator newEncapsulator(PublicKey publicKey, SecureRandom secureRandom)
Создает инкапсулятор KEM на стороне отправителя KEM.
KEM.Encapsulator newEncapsulator(PublicKey publicKey, AlgorithmParameterSpec spec, SecureRandom secureRandom)
Создает инкапсулятор KEM на стороне отправителя KEM.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удален в будущей версии.
Финализация устарела и может быть удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания, либо истечения определенного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания, либо истечения определенного промежутка реального времени.

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

getInstance

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

getInstance

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

getInstance

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

newEncapsulator

public KEM.Encapsulator newEncapsulator(PublicKey publicKey) throws InvalidKeyException
Создает инкапсулятор KEM на стороне отправителя KEM.

Этот метод эквивалентен newEncapsulator(publicKey, null, null).

Параметры:
publicKey — открытый ключ получателя; не должен иметь значение null
Возвращает:
инкапсулятор для этого ключа
Исключения:
InvalidKeyException — если publicKey имеет значение null или является недопустимым
UnsupportedOperationException — если этот метод не поддерживается, поскольку необходимо предоставить AlgorithmParameterSpec

newEncapsulator

public KEM.Encapsulator newEncapsulator(PublicKey publicKey, SecureRandom secureRandom) throws InvalidKeyException
Создает инкапсулятор KEM на стороне отправителя KEM.

Этот метод эквивалентен newEncapsulator(publicKey, null, secureRandom).

Параметры:
publicKey — открытый ключ получателя; не должен иметь значение null
secureRandom — источник случайных данных для инкапсуляции. Если значение равно null, будет использован источник по умолчанию, предоставляемый реализацией.
Возвращает:
инкапсулятор для этого ключа
Исключения:
InvalidKeyException — если publicKey имеет значение null или является недопустимым
UnsupportedOperationException — если этот метод не поддерживается, поскольку необходимо предоставить AlgorithmParameterSpec

newEncapsulator

public KEM.Encapsulator newEncapsulator(PublicKey publicKey, AlgorithmParameterSpec spec, SecureRandom secureRandom) throws InvalidAlgorithmParameterException, InvalidKeyException
Создает инкапсулятор KEM на стороне отправителя KEM.

Алгоритм может определить подкласс AlgorithmParameterSpec для передачи дополнительных сведений в этот метод. Это особенно полезно, если один и тот же ключ можно использовать для получения общих секретов разными способами. Если какие-либо дополнительные сведения из этого объекта необходимо передать вместе с сообщением инкапсуляции ключа, чтобы получатель мог создать соответствующий декапсулятор, они будут включены в массив байтов, возвращаемый методом KEM.Encapsulated.params() в выходных данных инкапсуляции. В этом случае поставщик средств безопасности должен предоставить реализацию AlgorithmParameters с тем же именем алгоритма, что и у KEM. Получатель может создать такой экземпляр AlgorithmParameters, используя полученный массив байтов params, и восстановить объект AlgorithmParameterSpec, который будет использоваться при вызове newDecapsulator(PrivateKey, AlgorithmParameterSpec).

Параметры:
publicKey — открытый ключ получателя; не должен иметь значение null
spec — необязательный параметр; может иметь значение null
secureRandom — источник случайных данных для инкапсуляции. Если значение равно null, будет использован источник по умолчанию, предоставляемый реализацией.
Возвращает:
инкапсулятор для этого ключа
Исключения:
InvalidAlgorithmParameterException — если spec является недопустимым или параметр необходим, но spec имеет значение null
InvalidKeyException — если publicKey имеет значение null или является недопустимым

newDecapsulator

public KEM.Decapsulator newDecapsulator(PrivateKey privateKey) throws InvalidKeyException
Создает декапсулятор KEM на стороне получателя KEM.

Этот метод эквивалентен newDecapsulator(privateKey, null).

Параметры:
privateKey — закрытый ключ получателя; не должен иметь значение null
Возвращает:
декапсулятор для этого ключа
Исключения:
InvalidKeyException — если privateKey имеет значение null или является недопустимым
UnsupportedOperationException — если этот метод не поддерживается, поскольку необходимо предоставить AlgorithmParameterSpec

newDecapsulator

public KEM.Decapsulator newDecapsulator(PrivateKey privateKey, AlgorithmParameterSpec spec) throws InvalidAlgorithmParameterException, InvalidKeyException
Создает декапсулятор KEM на стороне получателя KEM.
Параметры:
privateKey — закрытый ключ получателя; не должен иметь значение null
spec — параметр; может иметь значение null
Возвращает:
декапсулятор для этого ключа
Исключения:
InvalidAlgorithmParameterException — если spec является недопустимым или параметр необходим, но spec имеет значение null
InvalidKeyException — если privateKey имеет значение null или является недопустимым

getAlgorithm

public String getAlgorithm()
Возвращает имя алгоритма для этого объекта KEM.
Возвращает:
имя алгоритма для этого объекта KEM.

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, 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.

Spec-Zone.ru

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