- java.lang.Object
-
- javax.crypto.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(byte[] encoded)
从其ASN.1编码构造(即,解析)EncryptedPrivateKeyInfo
。EncryptedPrivateKeyInfo(String algName, byte[] encryptedData)
根据加密算法名称和加密数据构造一个EncryptedPrivateKeyInfo
。EncryptedPrivateKeyInfo(AlgorithmParameters algParams, byte[] encryptedData)
根据加密算法参数和加密数据构造EncryptedPrivateKeyInfo
。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 String
getAlgName()
返回加密算法。AlgorithmParameters
getAlgParameters()
返回加密算法使用的算法参数。byte[]
getEncoded()
返回此对象的ASN.1编码。byte[]
getEncryptedData()
返回加密数据。PKCS8EncodedKeySpec
getKeySpec(Key decryptKey)
从加密数据中提取附带的PKCS8EncodedKeySpec对象并将其返回。PKCS8EncodedKeySpec
getKeySpec(Key decryptKey, String providerName)
从加密数据中提取附带的PKCS8EncodedKeySpec对象并将其返回。PKCS8EncodedKeySpec
getKeySpec(Key decryptKey, Provider provider)
从加密数据中提取附带的PKCS8EncodedKeySpec对象并将其返回。PKCS8EncodedKeySpec
getKeySpec(Cipher cipher)
从加密数据中提取附带的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
- 如果algName
或encryptedData
为空。 -
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
- 如果algParams
或encryptedData
为空。 -
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) throws NoSuchAlgorithmException, InvalidKeyException
从加密数据中提取附带的PKCS8EncodedKeySpec对象并将其返回。- 参数
-
decryptKey
- 用于解密加密数据的密钥。 - 结果
- PKCS8EncodedKeySpec对象。
- 异常
-
NullPointerException
- 如果decryptKey
为空。 -
NoSuchAlgorithmException
- 如果找不到合适的密码来解密加密数据。 -
InvalidKeyException
- 如果decryptKey
不能用于解密加密数据或解密结果不是有效的PKCS8KeySpec。 - 从以下版本开始:
- 1.5
-
getKeySpec
public PKCS8EncodedKeySpec getKeySpec(Key decryptKey, String providerName) throws NoSuchProviderException, NoSuchAlgorithmException, InvalidKeyException
从加密数据中提取附带的PKCS8EncodedKeySpec对象并将其返回。- 参数
-
decryptKey
- 用于解密加密数据的密钥。 -
providerName
- 将使用其密码实现的提供程序的名称。 - 结果
- PKCS8EncodedKeySpec对象。
- 异常
-
NullPointerException
- 如果decryptKey
或providerName
为空。 -
NoSuchProviderException
- 如果没有注册提供商providerName
。 -
NoSuchAlgorithmException
- 如果找不到合适的密码来解密加密数据。 -
InvalidKeyException
- 如果decryptKey
不能用于解密加密数据或解密结果不是有效的PKCS8KeySpec。 - 从以下版本开始:
- 1.5
-
getKeySpec
public PKCS8EncodedKeySpec getKeySpec(Key decryptKey, Provider provider) throws NoSuchAlgorithmException, InvalidKeyException
从加密数据中提取附带的PKCS8EncodedKeySpec对象并将其返回。- 参数
-
decryptKey
- 用于解密加密数据的密钥。 -
provider
- 将使用其密码实现的提供程序的名称。 - 结果
- PKCS8EncodedKeySpec对象。
- 异常
-
NullPointerException
- 如果decryptKey
或provider
为空。 -
NoSuchAlgorithmException
- 如果找不到合适的密码来解密provider
的加密数据。 -
InvalidKeyException
- 如果decryptKey
不能用于解密加密数据或解密结果不是有效的PKCS8KeySpec。 - 从以下版本开始:
- 1.5
-
getEncoded
public byte[] getEncoded() throws IOException
返回此对象的ASN.1编码。- 结果
- ASN.1编码。 每次调用此方法时返回一个新数组。
- 异常
-
IOException
- 如果在构造其ASN.1编码时发生错误。
-
-