java.lang.Object
javax.crypto.EncryptedPrivateKeyInfo
该类实现了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 Summary
ConstructorDescriptionEncryptedPrivateKeyInfo
(byte[] encoded) 从其ASN.1编码构造(即解析)EncryptedPrivateKeyInfo
。EncryptedPrivateKeyInfo
(String algName, byte[] encryptedData) 从加密算法名称和加密数据构造EncryptedPrivateKeyInfo
。EncryptedPrivateKeyInfo
(AlgorithmParameters algParams, byte[] encryptedData) 从加密算法参数和加密数据构造EncryptedPrivateKeyInfo
。 -
Method Summary
Modifier and TypeMethodDescription返回加密算法。返回加密算法使用的算法参数。byte[]
返回此对象的ASN.1编码。byte[]
返回加密数据。getKeySpec
(Key decryptKey) 从加密数据中提取封装的PKCS8EncodedKeySpec对象并返回它。getKeySpec
(Key decryptKey, String providerName) 从加密数据中提取封装的PKCS8EncodedKeySpec对象并返回它。getKeySpec
(Key decryptKey, Provider provider) 从加密数据中提取封装的PKCS8EncodedKeySpec对象并返回它。getKeySpec
(Cipher cipher) 从加密数据中提取封装的PKCS8EncodedKeySpec对象并返回它。
-
Constructor Details
-
EncryptedPrivateKeyInfo
从其ASN.1编码构造(即解析)EncryptedPrivateKeyInfo
。- 参数:
-
encoded
- 此对象的ASN.1编码。数组的内容会被复制以防止后续修改。 - 抛出:
-
NullPointerException
- 如果encoded
为null
。 -
IOException
- 如果解析ASN.1编码时发生错误。
-
EncryptedPrivateKeyInfo
public EncryptedPrivateKeyInfo(String algName, byte[] encryptedData) throws NoSuchAlgorithmException 从加密算法名称和加密数据构造EncryptedPrivateKeyInfo
。注意:此构造函数将使用
null
作为算法参数的值。如果加密算法具有值不为null
的参数,应使用不同的构造函数,例如EncryptedPrivateKeyInfo(AlgorithmParameters, byte[])。- 参数:
-
algName
- 加密算法名称。有关标准Cipher算法名称的信息,请参阅Java安全标准算法名称文档。 -
encryptedData
- 加密数据。在构造此对象时,encryptedData
的内容会被复制以防止后续修改。 - 抛出:
-
NullPointerException
- 如果algName
或encryptedData
为null
。 -
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
- 如果algParams
或encryptedData
为null
。 -
IllegalArgumentException
- 如果encryptedData
为空,即长度为0。 -
NoSuchAlgorithmException
- 如果指定的algParams
参数的algName
不受支持。
-
-
Method Details
-
getAlgName
返回加密算法。注意:当可用时,将返回标准名称而不是构造函数中指定的名称。有关标准Cipher算法名称的信息,请参阅Java安全标准算法名称文档。
- 返回:
- 加密算法名称。
-
getAlgParameters
返回加密算法使用的算法参数。- 返回:
- 算法参数。
-
getEncryptedData
public byte[] getEncryptedData()返回加密数据。- 返回:
- 加密数据。每次调用此方法时都会返回一个新数组。
-
getKeySpec
从加密数据中提取封装的PKCS8EncodedKeySpec对象并返回它。
注意:为成功检索封装的PKCS8EncodedKeySpec对象,cipher
需要初始化为Cipher.DECRYPT_MODE或Cipher.UNWRAP_MODE,使用生成加密数据的相同密钥和参数。- 参数:
-
cipher
- 用于解密加密数据的已初始化的Cipher
对象。 - 返回:
- PKCS8EncodedKeySpec对象。
- 抛出:
-
NullPointerException
- 如果cipher
为null
。 -
InvalidKeySpecException
- 如果给定的cipher不适用于加密数据或加密数据已损坏且无法解密。
-
getKeySpec
public PKCS8EncodedKeySpec getKeySpec(Key decryptKey) throws NoSuchAlgorithmException, InvalidKeyException 从加密数据中提取封装的PKCS8EncodedKeySpec对象并返回它。- 参数:
-
decryptKey
- 用于解密加密数据的密钥。 - 返回:
- PKCS8EncodedKeySpec对象。
- 抛出:
-
NullPointerException
- 如果decryptKey
为null
。 -
NoSuchAlgorithmException
- 如果找不到适合解密加密数据的密码器。 -
InvalidKeyException
- 如果decryptKey
无法用于解密加密数据或解密结果不是有效的PKCS8KeySpec。 - 自 JDK 版本:
- 1.5
-
getKeySpec
public PKCS8EncodedKeySpec getKeySpec(Key decryptKey, String providerName) throws NoSuchProviderException, NoSuchAlgorithmException, InvalidKeyException 从加密数据中提取封装的PKCS8EncodedKeySpec对象并返回它。- 参数:
-
decryptKey
- 用于解密加密数据的密钥。 -
providerName
- 将使用其密码器实现的提供程序的名称。 - 返回:
- PKCS8EncodedKeySpec对象。
- 抛出:
-
NullPointerException
- 如果decryptKey
或providerName
为null
。 -
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
- 如果decryptKey
或provider
为null
。 -
NoSuchAlgorithmException
- 如果在provider
中找不到适合解密加密数据的密码器。 -
InvalidKeyException
- 如果decryptKey
无法用于解密加密数据或解密结果不是有效的PKCS8KeySpec。 - 自 JDK 版本:
- 1.5
-
getEncoded
返回此对象的ASN.1编码。- 返回:
- ASN.1编码。每次调用此方法时都会返回一个新数组。
- 抛出:
-
IOException
- 构造其ASN.1编码时发生错误。
-