java.lang.Object
javax.crypto.KEM.Encapsulator
- 封装类:
-
KEM
由KEM发送方在KEM.html#newEncapsulator(java.security.PublicKey)上生成的封装器。
此类表示KEM的密钥封装函数。每次调用encapsulate
方法都会生成一个新的秘密密钥和密钥封装消息,该消息以KEM.Encapsulated
对象的形式返回。
- 自:
- 21
-
Method Summary
Modifier and TypeMethodDescription密钥封装函数。encapsulate
(int from, int to, String algorithm) 密钥封装函数。int
返回密钥封装消息的大小。返回提供程序的名称。int
返回共享秘密的大小。
-
Method Details
-
providerName
返回提供程序的名称。- 返回:
- 提供程序的名称
-
encapsulate
密钥封装函数。此方法等效于
encapsulate(0, secretSize(), "Generic")
。每个实现都必须支持这组参数的组合。生成的秘密密钥通常会传递给密钥派生函数(KDF)作为输入密钥材料。
- 返回:
-
包含共享秘密、密钥封装消息和可选参数的
KEM.Encapsulated
对象。共享秘密是一个包含秘密所有字节的SecretKey
,算法名称为"Generic"。
-
encapsulate
密钥封装函数。每次调用此方法都会生成一个新的秘密密钥和密钥封装消息,该消息以
KEM.Encapsulated
对象的形式返回。实现可以选择不支持
from
、to
和algorithm
的任意组合。- 参数:
-
from
- 要返回的共享秘密字节数组的初始索引(包括) -
to
- 要返回的共享秘密字节数组的最终索引(不包括) -
algorithm
- 返回的秘密密钥的算法名称 - 返回:
-
包含共享秘密部分、密钥封装消息和可选参数的
KEM.Encapsulated
对象。共享秘密部分是一个包含从from
到to
(不包括)范围内的秘密字节的SecretKey
,算法名称如指定。例如,encapsulate(0, 16, "AES")
使用共享秘密的前16个字节作为128位AES密钥。 - 抛出:
-
IndexOutOfBoundsException
- 如果from < 0
,from > to
或to > secretSize()
-
NullPointerException
- 如果algorithm
为null
-
UnsupportedOperationException
- 如果封装器不支持from
、to
和algorithm
的组合
-
secretSize
public int secretSize()返回共享秘密的大小。在调用
encapsulate
之前或者无法提取获得的SecretKey
时,可以调用此方法来查找共享秘密的长度。- 返回:
- 共享秘密的大小
-
encapsulationSize
public int encapsulationSize()返回密钥封装消息的大小。在调用
encapsulate
之前,可以调用此方法来查找封装消息的长度。- 返回:
- 密钥封装消息的大小
-