Module java.base
Package javax.crypto

Class KEM.Decapsulator

java.lang.Object
javax.crypto.KEM.Decapsulator
封装类:
KEM

public static final class KEM.Decapsulator extends Object
由KEM接收方在KEM接收方生成的解封装器。

此类表示KEM的密钥解封装函数。调用decapsulate方法会从密钥封装消息中恢复出密钥。

自:
21
  • Method Details

    • providerName

      public String providerName()
      返回提供程序的名称。
      返回:
      提供程序的名称
    • decapsulate

      public SecretKey decapsulate(byte[] encapsulation) throws DecapsulateException
      密钥解封装函数。

      此方法等效于decapsulate(encapsulation, 0, secretSize(), "Generic")。每个实现必须支持这组参数的组合。

      生成的密钥通常会传递给密钥派生函数(KDF)作为输入密钥材料。

      参数:
      encapsulation - 发件人发送的密钥封装消息。大小必须等于encapsulationSize()返回的值,否则将抛出DecapsulateException
      返回:
      共享密钥,作为具有算法名称"Generic"的SecretKey
      抛出:
      DecapsulateException - 如果解封装过程中发生错误
      NullPointerException - 如果encapsulationnull
    • decapsulate

      public SecretKey decapsulate(byte[] encapsulation, int from, int to, String algorithm) throws DecapsulateException
      密钥解封装函数。

      调用此方法会从密钥封装消息中恢复出密钥。

      实现可以选择不支持fromtoalgorithm的任意组合。

      参数:
      encapsulation - 发件人发送的密钥封装消息。大小必须等于encapsulationSize()返回的值,否则将抛出DecapsulateException
      from - 要返回的共享密钥字节数组的起始索引(包括)
      to - 要返回的共享密钥字节数组的最终索引(不包括)
      algorithm - 返回的密钥的算法名称
      返回:
      作为SecretKey的共享密钥的一部分,包含从fromto(不包括)的字节,并指定的算法名称。例如,decapsulate(encapsulation, secretSize() - 16, secretSize(), "AES")使用共享密钥的最后16个字节作为128位AES密钥。
      抛出:
      DecapsulateException - 如果解封装过程中发生错误
      IndexOutOfBoundsException - 如果from < 0from > toto > secretSize()
      NullPointerException - 如果encapsulationalgorithmnull
    • secretSize

      public int secretSize()
      返回共享密钥的大小。

      此方法可用于在调用decapsulate之前或如果获取的SecretKey不可提取时查找共享密钥的长度。

      返回:
      共享密钥的大小
    • encapsulationSize

      public int encapsulationSize()
      返回密钥封装消息的大小。

      如果高级协议未提供长度信息,则可以使用此方法从较长的字节数组中提取封装消息。

      返回:
      密钥封装消息的大小