模块  java.base
软件包  javax.crypto

Class EncryptedPrivateKeyInfo


  • public class EncryptedPrivateKeyInfoextends Object
    此类实现PKCS#8中定义的EncryptedPrivateKeyInfo类型。

    其ASN.1定义如下:

      EncryptedPrivateKeyInfo ::=  SEQUENCE {     encryptionAlgorithm   AlgorithmIdentifier,     encryptedData   OCTET STRING } AlgorithmIdentifier  ::=  SEQUENCE  {     algorithm              OBJECT IDENTIFIER,     parameters             ANY DEFINED BY algorithm OPTIONAL  } 
    从以下版本开始:
    1.4
    另请参见:
    PKCS8EncodedKeySpec
    • 构造方法详细信息

      • EncryptedPrivateKeyInfo

        public EncryptedPrivateKeyInfo​(byte[] encoded)                        throws IOException
        从其ASN.1编码构造(即,解析) EncryptedPrivateKeyInfo
        参数
        encoded - 此对象的ASN.1编码。 复制数组的内容以防止后续修改。
        异常
        NullPointerException - 如果 encoded为空。
        IOException - 解析ASN.1编码时是否发生错误。
      • EncryptedPrivateKeyInfo

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

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

        参数
        algName - 加密算法名称。 有关标准密码算法名称的信息,请参阅Java Security Standard Algorithm Names文档。
        encryptedData - 加密数据。 复制encrypedData的内容以防止在构造此对象时进行后续修改。
        异常
        NullPointerException - 如果 algNameencryptedData为空。
        IllegalArgumentException - 如果 encryptedData为空,即0长度。
        NoSuchAlgorithmException - 如果不支持指定的algName。
      • EncryptedPrivateKeyInfo

        public EncryptedPrivateKeyInfo​(AlgorithmParameters algParams,                               byte[] encryptedData)                        throws NoSuchAlgorithmException
        根据加密算法参数和加密数据构造 EncryptedPrivateKeyInfo
        参数
        algParams - 加密算法的算法参数。 algParams.getEncoded()应返回EncryptedPrivateKeyInfo类型的AlgorithmIdentifer组件的parameters字段的ASN.1编码字节。
        encryptedData - 加密数据。 复制encrypedData的内容以防止在构造此对象时进行后续修改。
        异常
        NullPointerException - 如果 algParamsencryptedData为空。
        IllegalArgumentException - 如果 encryptedData为空,即0长度。
        NoSuchAlgorithmException - 如果不支持指定的 algParams参数的指定 algParams
    • 方法详细信息

      • getAlgName

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

        注意:当此类映射可用时,将返回标准名称而不是构造函数中指定的名称。 有关标准密码算法名称的信息,请参阅Java Security Standard Algorithm Names文档。

        结果
        加密算法名称。
      • 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 - 初始化的密码对象,用于解密加密数据。
        结果
        PKCS8EncodedKeySpec对象。
        异常
        NullPointerException - 如果 cipher为空。
        InvalidKeySpecException - 如果给定的密码不适合加密数据,或者加密数据已损坏且无法解密。
      • getKeySpec

        public PKCS8EncodedKeySpec getKeySpec​(Key decryptKey,                                      Provider provider)                               throws NoSuchAlgorithmException,                                      InvalidKeyException
        从加密数据中提取附带的PKCS8EncodedKeySpec对象并将其返回。
        参数
        decryptKey - 用于解密加密数据的密钥。
        provider - 将使用其密码实现的提供程序的名称。
        结果
        PKCS8EncodedKeySpec对象。
        异常
        NullPointerException - 如果 decryptKeyprovider为空。
        NoSuchAlgorithmException - 如果找不到合适的密码来解密 provider的加密数据。
        InvalidKeyException - 如果 decryptKey不能用于解密加密数据或解密结果不是有效的PKCS8KeySpec。
        从以下版本开始:
        1.5
      • getEncoded

        public byte[] getEncoded()                  throws IOException
        返回此对象的ASN.1编码。
        结果
        ASN.1编码。 每次调用此方法时返回一个新数组。
        异常
        IOException - 如果在构造其ASN.1编码时发生错误。