Класс KEM
public final class KEM extends Object
Метод 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 |
Возвращает объект 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. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект какому-либо другому объекту. |
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 |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания, либо истечения определенного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или прерывания, либо истечения определенного промежутка реального времени. |
Подробное описание методов
getInstance
public static KEM getInstance(String algorithm) throws NoSuchAlgorithmException
KEM, реализующий указанный алгоритм.- Параметры:
-
algorithm— имя алгоритма KEM. Сведения о стандартных именах алгоритмов KEM см. в разделеKEMдокумента Спецификация стандартных имен алгоритмов безопасности Java. - Возвращает:
- новый объект
KEM - Исключения:
-
NoSuchAlgorithmException— если ни одинProviderне поддерживает реализациюKEMдля указанного алгоритма -
NullPointerException— еслиalgorithmимеет значениеnull - Внешние спецификации
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 - Внешние спецификации
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 - Внешние спецификации
newEncapsulator
public KEM.Encapsulator newEncapsulator(PublicKey publicKey) throws InvalidKeyException
Этот метод эквивалентен newEncapsulator(publicKey, null, null).
- Параметры:
-
publicKey— открытый ключ получателя; не должен иметь значениеnull - Возвращает:
- инкапсулятор для этого ключа
- Исключения:
-
InvalidKeyException— еслиpublicKeyимеет значениеnullили является недопустимым -
UnsupportedOperationException— если этот метод не поддерживается, поскольку необходимо предоставитьAlgorithmParameterSpec
newEncapsulator
public KEM.Encapsulator newEncapsulator(PublicKey publicKey, SecureRandom secureRandom) throws InvalidKeyException
Этот метод эквивалентен 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
Алгоритм может определить подкласс 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
Этот метод эквивалентен newDecapsulator(privateKey, null).
- Параметры:
-
privateKey— закрытый ключ получателя; не должен иметь значениеnull - Возвращает:
- декапсулятор для этого ключа
- Исключения:
-
InvalidKeyException— еслиprivateKeyимеет значениеnullили является недопустимым -
UnsupportedOperationException— если этот метод не поддерживается, поскольку необходимо предоставитьAlgorithmParameterSpec
newDecapsulator
public KEM.Decapsulator newDecapsulator(PrivateKey privateKey, AlgorithmParameterSpec spec) throws InvalidAlgorithmParameterException, InvalidKeyException
- Параметры:
-
privateKey— закрытый ключ получателя; не должен иметь значениеnull -
spec— параметр; может иметь значениеnull - Возвращает:
- декапсулятор для этого ключа
- Исключения:
-
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.