Module java.base
Package javax.crypto

Class EncryptedPrivateKeyInfo

java.lang.Object
javax.crypto.EncryptedPrivateKeyInfo

public class EncryptedPrivateKeyInfo extends Object
该类实现了PKCS#8中定义的EncryptedPrivateKeyInfo类型。

其ASN.1定义如下:

 EncryptedPrivateKeyInfo ::=  SEQUENCE {
     encryptionAlgorithm   AlgorithmIdentifier,
     encryptedData   OCTET STRING }

 AlgorithmIdentifier  ::=  SEQUENCE  {
     algorithm              OBJECT IDENTIFIER,
     parameters             ANY DEFINED BY algorithm OPTIONAL  }
 
自 JDK 版本:
1.4
参见:
  • Constructor Details

    • EncryptedPrivateKeyInfo

      public EncryptedPrivateKeyInfo(byte[] encoded) throws IOException
      从其ASN.1编码构造(即解析)EncryptedPrivateKeyInfo
      参数:
      encoded - 此对象的ASN.1编码。数组的内容会被复制以防止后续修改。
      抛出:
      NullPointerException - 如果encodednull
      IOException - 如果解析ASN.1编码时发生错误。
    • EncryptedPrivateKeyInfo

      public EncryptedPrivateKeyInfo(String algName, byte[] encryptedData) throws NoSuchAlgorithmException
      从加密算法名称和加密数据构造EncryptedPrivateKeyInfo

      注意:此构造函数将使用null作为算法参数的值。如果加密算法具有值不为null的参数,应使用不同的构造函数,例如EncryptedPrivateKeyInfo(AlgorithmParameters, byte[])。

      参数:
      algName - 加密算法名称。有关标准Cipher算法名称的信息,请参阅Java安全标准算法名称文档。
      encryptedData - 加密数据。在构造此对象时,encryptedData的内容会被复制以防止后续修改。
      抛出:
      NullPointerException - 如果algNameencryptedDatanull
      IllegalArgumentException - 如果encryptedData为空,即长度为0。
      NoSuchAlgorithmException - 如果指定的algName不受支持。
    • EncryptedPrivateKeyInfo

      public EncryptedPrivateKeyInfo(AlgorithmParameters algParams, byte[] encryptedData) throws NoSuchAlgorithmException
      从加密算法参数和加密数据构造EncryptedPrivateKeyInfo
      参数:
      algParams - 用于加密算法的算法参数。algParams.getEncoded()应返回EncryptedPrivateKeyInfo类型的AlgorithmIdentifier组件的parameters字段的ASN.1编码字节。
      encryptedData - 加密数据。在构造此对象时,encryptedData的内容会被复制以防止后续修改。
      抛出:
      NullPointerException - 如果algParamsencryptedDatanull
      IllegalArgumentException - 如果encryptedData为空,即长度为0。
      NoSuchAlgorithmException - 如果指定的algParams参数的algName不受支持。
  • Method Details

    • getAlgName

      public String getAlgName()
      返回加密算法。

      注意:当可用时,将返回标准名称而不是构造函数中指定的名称。有关标准Cipher算法名称的信息,请参阅Java安全标准算法名称文档。

      返回:
      加密算法名称。
    • getAlgParameters

      public AlgorithmParameters getAlgParameters()
      返回加密算法使用的算法参数。
      返回:
      算法参数。
    • getEncryptedData

      public byte[] getEncryptedData()
      返回加密数据。
      返回:
      加密数据。每次调用此方法时都会返回一个新数组。
    • getKeySpec

      public PKCS8EncodedKeySpec getKeySpec(Cipher cipher) throws InvalidKeySpecException
      从加密数据中提取封装的PKCS8EncodedKeySpec对象并返回它。
      注意:为成功检索封装的PKCS8EncodedKeySpec对象,cipher需要初始化为Cipher.DECRYPT_MODE或Cipher.UNWRAP_MODE,使用生成加密数据的相同密钥和参数。
      参数:
      cipher - 用于解密加密数据的已初始化的Cipher对象。
      返回:
      PKCS8EncodedKeySpec对象。
      抛出:
      NullPointerException - 如果ciphernull
      InvalidKeySpecException - 如果给定的cipher不适用于加密数据或加密数据已损坏且无法解密。
    • getKeySpec

      public PKCS8EncodedKeySpec getKeySpec(Key decryptKey) throws NoSuchAlgorithmException, InvalidKeyException
      从加密数据中提取封装的PKCS8EncodedKeySpec对象并返回它。
      参数:
      decryptKey - 用于解密加密数据的密钥。
      返回:
      PKCS8EncodedKeySpec对象。
      抛出:
      NullPointerException - 如果decryptKeynull
      NoSuchAlgorithmException - 如果找不到适合解密加密数据的密码器。
      InvalidKeyException - 如果decryptKey无法用于解密加密数据或解密结果不是有效的PKCS8KeySpec。
      自 JDK 版本:
      1.5
    • getKeySpec

      public PKCS8EncodedKeySpec getKeySpec(Key decryptKey, String providerName) throws NoSuchProviderException, NoSuchAlgorithmException, InvalidKeyException
      从加密数据中提取封装的PKCS8EncodedKeySpec对象并返回它。
      参数:
      decryptKey - 用于解密加密数据的密钥。
      providerName - 将使用其密码器实现的提供程序的名称。
      返回:
      PKCS8EncodedKeySpec对象。
      抛出:
      NullPointerException - 如果decryptKeyproviderNamenull
      NoSuchProviderException - 如果未注册提供程序providerName
      NoSuchAlgorithmException - 如果找不到适合解密加密数据的密码器。
      InvalidKeyException - 如果decryptKey无法用于解密加密数据或解密结果不是有效的PKCS8KeySpec。
      自 JDK 版本:
      1.5
    • getKeySpec

      public PKCS8EncodedKeySpec getKeySpec(Key decryptKey, Provider provider) throws NoSuchAlgorithmException, InvalidKeyException
      从加密数据中提取封装的PKCS8EncodedKeySpec对象并返回它。
      参数:
      decryptKey - 用于解密加密数据的密钥。
      provider - 将使用其密码器实现的提供程序的名称。
      返回:
      PKCS8EncodedKeySpec对象。
      抛出:
      NullPointerException - 如果decryptKeyprovidernull
      NoSuchAlgorithmException - 如果在provider中找不到适合解密加密数据的密码器。
      InvalidKeyException - 如果decryptKey无法用于解密加密数据或解密结果不是有效的PKCS8KeySpec。
      自 JDK 版本:
      1.5
    • getEncoded

      public byte[] getEncoded() throws IOException
      返回此对象的ASN.1编码。
      返回:
      ASN.1编码。每次调用此方法时都会返回一个新数组。
      抛出:
      IOException - 构造其ASN.1编码时发生错误。