java.lang.Object
javax.crypto.KEM.Decapsulator
- 封装类:
-
KEM
由KEM接收方在KEM接收方生成的解封装器。
此类表示KEM的密钥解封装函数。调用decapsulate
方法会从密钥封装消息中恢复出密钥。
- 自:
- 21
-
Method Summary
Modifier and TypeMethodDescriptiondecapsulate
(byte[] encapsulation) 密钥解封装函数。decapsulate
(byte[] encapsulation, int from, int to, String algorithm) 密钥解封装函数。int
返回密钥封装消息的大小。返回提供程序的名称。int
返回共享密钥的大小。
-
Method Details
-
providerName
返回提供程序的名称。- 返回:
- 提供程序的名称
-
decapsulate
密钥解封装函数。此方法等效于
decapsulate(encapsulation, 0, secretSize(), "Generic")
。每个实现必须支持这组参数的组合。生成的密钥通常会传递给密钥派生函数(KDF)作为输入密钥材料。
- 参数:
-
encapsulation
- 发件人发送的密钥封装消息。大小必须等于encapsulationSize()
返回的值,否则将抛出DecapsulateException
。 - 返回:
-
共享密钥,作为具有算法名称"Generic"的
SecretKey
- 抛出:
-
DecapsulateException
- 如果解封装过程中发生错误 -
NullPointerException
- 如果encapsulation
为null
-
decapsulate
public SecretKey decapsulate(byte[] encapsulation, int from, int to, String algorithm) throws DecapsulateException 密钥解封装函数。调用此方法会从密钥封装消息中恢复出密钥。
实现可以选择不支持
from
、to
和algorithm
的任意组合。- 参数:
-
encapsulation
- 发件人发送的密钥封装消息。大小必须等于encapsulationSize()
返回的值,否则将抛出DecapsulateException
。 -
from
- 要返回的共享密钥字节数组的起始索引(包括) -
to
- 要返回的共享密钥字节数组的最终索引(不包括) -
algorithm
- 返回的密钥的算法名称 - 返回:
-
作为
SecretKey
的共享密钥的一部分,包含从from
到to
(不包括)的字节,并指定的算法名称。例如,decapsulate(encapsulation, secretSize() - 16, secretSize(), "AES")
使用共享密钥的最后16个字节作为128位AES密钥。 - 抛出:
-
DecapsulateException
- 如果解封装过程中发生错误 -
IndexOutOfBoundsException
- 如果from < 0
,from > to
或to > secretSize()
-
NullPointerException
- 如果encapsulation
或algorithm
为null
-
secretSize
public int secretSize()返回共享密钥的大小。此方法可用于在调用
decapsulate
之前或如果获取的SecretKey
不可提取时查找共享密钥的长度。- 返回:
- 共享密钥的大小
-
encapsulationSize
public int encapsulationSize()返回密钥封装消息的大小。如果高级协议未提供长度信息,则可以使用此方法从较长的字节数组中提取封装消息。
- 返回:
- 密钥封装消息的大小
-