- 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 }
- 从以下版本开始:
- 1.4
- 另请参见:
-
PKCS8EncodedKeySpec
-
-
构造方法摘要
构造方法 Constructor 描述 EncryptedPrivateKeyInfo(byte[] encoded)
从其ASN.1编码构造(即解析)一个EncryptedPrivateKeyInfo
。EncryptedPrivateKeyInfo(String algName, byte[] encryptedData)
根据加密算法名称和加密数据构建一个EncryptedPrivateKeyInfo
。EncryptedPrivateKeyInfo(AlgorithmParameters algParams, byte[] encryptedData)
从加密算法参数和加密数据构建一个EncryptedPrivateKeyInfo
。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 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
- 将使用Cipher实现的提供程序的名称。 - 结果
- 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
- 将使用Cipher实现的提供程序的名称。 - 结果
- PKCS8EncodedKeySpec对象。
- 异常
-
NullPointerException
- 如果decryptKey
或provider
为空。 -
NoSuchAlgorithmException
- 如果在provider
找不到适当的密码来解密加密数据。 -
InvalidKeyException
- 如果decryptKey
不能用于解密加密数据或解密结果不是有效的PKCS8KeySpec。 - 从以下版本开始:
- 1.5
-
getEncoded
public byte[] getEncoded() throws IOException
返回此对象的ASN.1编码。- 结果
- ASN.1编码。 每次调用此方法时都会返回一个新数组。
- 异常
-
IOException
- 如果构建其ASN.1编码时发生错误。
-
-