Класс KEM
public final class KEM extends Object
Метод getInstance создает новый объект KEM, реализующий указанный алгоритм.
Объект KEM неизменяем. Безопасно вызывать несколько методов newEncapsulator и newDecapsulator для одного и того же объекта KEM одновременно.
Если поставщик не указан в методе getInstance при создании объекта KEM, методы newEncapsulator и newDecapsulator могут возвращать инкапсуляторы или деинкапсуляторы из разных поставщиков. Выбранный поставщик основан на параметрах, переданных методам newEncapsulator или newDecapsulator: приватном или открытом ключе и необязательных AlgorithmParameterSpec. Методы KEM.Encapsulator.providerName() и KEM.Decapsulator.providerName() возвращают имя выбранного поставщика.
Объекты Encapsulator и Decapsulator также неизменяемы. Безопасно вызывать несколько методов encapsulate и decapsulate для одного и того же объекта Encapsulator или Decapsulator одновременно. Каждый вызов encapsulate сгенерирует новый общий секрет и сообщение инкапсуляции ключа.
Пример:
// Receiver side
var kpg = KeyPairGenerator.getInstance("X25519");
var kp = kpg.generateKeyPair();
// Sender side
var kem1 = KEM.getInstance("DHKEM");
var sender = kem1.newEncapsulator(kp.getPublic());
var encapsulated = sender.encapsulate();
var k1 = encapsulated.key();
// Receiver side
var kem2 = KEM.getInstance("DHKEM");
var receiver = kem2.newDecapsulator(kp.getPrivate());
var k2 = receiver.decapsulate(encapsulated.encapsulation());
assert Arrays.equals(k1.getEncoded(), k2.getEncoded());
- С:
- 21
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static final class |
KEM.Decapsulator |
Деинкапсулятор, сгенерированный методом newDecapsulator(java.security.PrivateKey) со стороны получателя KEM. |
static final class |
KEM.Encapsulated |
Этот класс определяет возвращаемое значение метода encapsulate механизма инкапсуляции ключей (KEM), который включает общий секрет (как SecretKey), сообщение инкапсуляции ключа и необязательные параметры. |
static final class |
KEM.Encapsulator |
Инкапсулятор, сгенерированный методом newEncapsulator(java.security.PublicKey) со стороны отправителя KEM. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
String |
getAlgorithm() |
Возвращает имя алгоритма для этого объекта KEM. |
static KEM |
getInstance |
Возвращает объект KEM, реализующий указанный алгоритм. |
static KEM |
getInstance |
Возвращает объект KEM, реализующий указанный алгоритм из указанного поставщика безопасности. |
static KEM |
getInstance |
Возвращает объект KEM, реализующий указанный алгоритм из указанного поставщика безопасности. |
KEM.Decapsulator |
newDecapsulator |
Создает деинкапсулятор KEM со стороны получателя KEM. |
KEM.Decapsulator |
newDecapsulator |
Создаёт деинкапсулятор KEM со стороны получателя KEM. |
KEM.Encapsulator |
newEncapsulator |
Создаёт инкапсулятор KEM со стороны отправителя KEM. |
KEM.Encapsulator |
newEncapsulator |
Создаёт инкапсулятор KEM со стороны отправителя KEM. |
KEM.Encapsulator |
newEncapsulator |
Создаёт инкапсулятор KEM со стороны отправителя KEM. |
Подробное описание методов
getInstance
public static KEM getInstance(String algorithm) throws NoSuchAlgorithmException
KEM, реализующий указанный алгоритм.- Параметры:
-
algorithm- имя алгоритма KEM. См. разделKEMв Спецификации стандартных имён алгоритмов Java Security для получения информации о стандартных именах алгоритмов KEM. - Возвращаемое значение:
- новый объект
KEM - Исключения:
-
NoSuchAlgorithmException- если ни одинProviderне поддерживает реализациюKEMдля указанного алгоритма -
NullPointerException- еслиalgorithmявляетсяnull
getInstance
public static KEM getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
KEM, реализующий указанный алгоритм от указанного поставщика безопасности.- Параметры:
-
algorithm- имя алгоритма KEM. См. разделKEMв Спецификации стандартных имён алгоритмов Java Security для получения информации о стандартных именах алгоритмов KEM. -
provider- поставщик. Еслиnull, этот метод эквивалентенgetInstance(String). - Возвращаемое значение:
- новый объект
KEM - Исключения:
-
NoSuchAlgorithmException- если указанproviderи он не поддерживает указанный алгоритм KEM, или еслиproviderявляетсяnullи нет поставщика, который поддерживает реализацию KEM для указанного алгоритма -
NullPointerException- еслиalgorithmявляетсяnull
getInstance
public static KEM getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
KEM, реализующий указанный алгоритм от указанного поставщика безопасности.- Параметры:
-
algorithm- имя алгоритма KEM. См. разделKEMв Спецификации стандартных имён алгоритмов Java Security для получения информации о стандартных именах алгоритмов KEM. -
provider- поставщик. Еслиnull, этот метод эквивалентенgetInstance(String). - Возвращаемое значение:
- новый объект
KEM - Исключения:
-
NoSuchAlgorithmException- если указанproviderи он не поддерживает указанный алгоритм KEM, или еслиproviderявляетсяnullи нет поставщика, который поддерживает реализацию KEM для указанного алгоритма -
NoSuchProviderException- если указанный поставщик не зарегистрирован в списке поставщиков безопасности -
NullPointerException- еслиalgorithmявляетсяnull
newEncapsulator
public KEM.Encapsulator newEncapsulator(PublicKey publicKey) throws InvalidKeyException
Этот метод эквивалентен newEncapsulator(publicKey, null, null).
- Параметры:
-
publicKey- открытый ключ получателя, не должен бытьnull - Возвращаемое значение:
- encapsulator для этого ключа
- Исключения:
-
InvalidKeyException- еслиpublicKeyявляетсяnullили некорректным -
UnsupportedOperationException- если этот метод не поддерживается, потому что должен быть предоставленAlgorithmParameterSpec
newEncapsulator
public KEM.Encapsulator newEncapsulator(PublicKey publicKey, SecureRandom secureRandom) throws InvalidKeyException
Этот метод эквивалентен newEncapsulator(publicKey, null, secureRandom).
- Параметры:
-
publicKey- открытый ключ получателя, не должен бытьnull -
secureRandom- источник случайности для инкапсуляции. Если null, будет использоваться значение по умолчанию от реализации. - Возвращаемое значение:
- encapsulator для этого ключа
- Исключения:
-
InvalidKeyException- еслиpublicKeyявляетсяnullили некорректным -
UnsupportedOperationException- если этот метод не поддерживается, потому что должен быть предоставленAlgorithmParameterSpec
newEncapsulator
public KEM.Encapsulator newEncapsulator(PublicKey publicKey, AlgorithmParameterSpec spec, SecureRandom secureRandom) throws InvalidAlgorithmParameterException, InvalidKeyException
Алгоритм может определить подкласс AlgorithmParameterSpec для предоставления дополнительной информации в этом методе. Это особенно полезно, если один и тот же ключ может использоваться для вывода общих секретов различными способами. Если какая-либо дополнительная информация в этом объекте должна быть передана вместе с сообщением инкапсуляции ключа, чтобы получатель мог создать соответствующий decapsulator, она будет включена как массив байтов в поле KEM.Encapsulated.params в выходе инкапсуляции. В этом случае поставщик безопасности должен предоставить реализацию AlgorithmParameters, используя то же имя алгоритма, что и KEM. Получатель может инициализировать такой экземпляр AlgorithmParameters с полученным массивом байтов params и восстановить объект AlgorithmParameterSpec, который будет использоваться в его вызове newDecapsulator(PrivateKey, AlgorithmParameterSpec).
- Параметры:
-
publicKey- открытый ключ получателя, не должен бытьnull -
spec- необязательный параметр, может бытьnull -
secureRandom- источник случайности для инкапсуляции. Если null, будет использоваться значение по умолчанию от реализации. - Возвращаемое значение:
- encapsulator для этого ключа
- Исключения:
-
InvalidAlgorithmParameterException- еслиspecявляется некорректным или требуется, ноspecявляетсяnull -
InvalidKeyException- еслиpublicKeyявляетсяnullили некорректным
newDecapsulator
public KEM.Decapsulator newDecapsulator(PrivateKey privateKey) throws InvalidKeyException
Этот метод эквивалентен newDecapsulator(privateKey, null).
- Параметры:
-
privateKey- закрытый ключ получателя, не должен бытьnull - Возвращаемое значение:
- decapsulator для этого ключа
- Исключения:
-
InvalidKeyException- еслиprivateKeyявляетсяnullили некорректным -
UnsupportedOperationException- если этот метод не поддерживается, потому что должен быть предоставленAlgorithmParameterSpec
newDecapsulator
public KEM.Decapsulator newDecapsulator(PrivateKey privateKey, AlgorithmParameterSpec spec) throws InvalidAlgorithmParameterException, InvalidKeyException
- Параметры:
-
privateKey- закрытый ключ получателя, не должен бытьnull -
spec- параметр, может бытьnull - Возвращаемое значение:
- decapsulator для этого ключа
- Исключения:
-
InvalidAlgorithmParameterException- еслиspecявляется некорректным или требуется, ноspecявляетсяnull -
InvalidKeyException- еслиprivateKeyявляетсяnullили некорректным
getAlgorithm
public String getAlgorithm()
KEM.- Возвращаемое значение:
- имя алгоритма для этого объекта
KEM.
© 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/KEM.html