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()返回密钥封装消息的大小。如果高级协议未提供长度信息,则可以使用此方法从较长的字节数组中提取封装消息。
- 返回:
- 密钥封装消息的大小
-