- java.lang.Object
-
- javax.crypto.SealedObject
-
- 实现的所有接口
-
Serializable
public class SealedObject extends Object implements Serializable
该类使程序员能够使用加密算法创建对象并保护其机密性。给定任何Serializable对象,可以使用序列化格式(即“深拷贝”)创建封装原始对象的SealedObject,并使用AES等加密算法密封(加密)其序列化内容,以保护其机密性。 稍后可以解密加密的内容(使用相应的算法使用正确的解密密钥)并反序列化,从而产生原始对象。
请注意,在应用于SealedObject之前,必须使用正确的算法,密钥,填充方案等对Cipher对象进行完全初始化。
密封的原始对象可以通过两种不同的方式恢复:
- 从以下版本开始:
- 1.4
- 另请参见:
-
Cipher
, Serialized Form
-
-
字段汇总
字段 变量和类型 字段 描述 protected byte[]
encodedParams
密封密码使用的加密参数,以默认格式编码。
-
构造方法摘要
构造方法 变量 构造器 描述 SealedObject(Serializable object, Cipher c)
从任何Serializable对象构造一个SealedObject。protected
SealedObject(SealedObject so)
从传入的SealedObject构造一个SealedObject对象。
-
-
-
构造方法详细信息
-
SealedObject
public SealedObject(Serializable object, Cipher c) throws IOException, IllegalBlockSizeException
从任何Serializable对象构造一个SealedObject。给定对象是序列化的,其序列化内容使用给定的密码加密,必须完全初始化。
可以在加密操作中使用的任何算法参数都存储在新的
SealedObject
。- 参数
-
object
- 要密封的物体; 可以为null。 -
c
- 用于密封物体的密码。 - 异常
-
NullPointerException
- 如果给定的密码为空。 -
IOException
- 如果序列化期间发生错误 -
IllegalBlockSizeException
- 如果给定的密码是块密码,则没有请求填充,并且总输入长度(即,序列化对象内容的长度)不是密码块大小的倍数
-
SealedObject
protected SealedObject(SealedObject so)
从传入的SealedObject构造一个SealedObject对象。- 参数
-
so
- SealedObject对象 - 异常
-
NullPointerException
- 如果给定的密封对象为空。
-
-
方法详细信息
-
getAlgorithm
public final String getAlgorithm()
返回用于密封此对象的算法。- 结果
- 用于密封此对象的算法。
-
getObject
public final Object getObject(Key key) throws IOException, ClassNotFoundException, NoSuchAlgorithmException, InvalidKeyException
检索原始(封装)对象。此方法为密封操作中使用的算法创建密码。 如果默认提供程序包提供该算法的实现,则使用包含该实现的Cipher实例。 如果算法在默认包中不可用,则搜索其他包。 使用给定的
key
和密封操作中使用的参数(如果有),初始化Cipher对象以进行解密。在返回之前,封装的对象是未密封的和反序列化的。
- 参数
-
key
- 用于key
对象的密钥。 - 结果
- 原始对象。
- 异常
-
IOException
- 如果在反序列化期间发生错误。 -
ClassNotFoundException
- 如果在反序列化期间发生错误。 -
NoSuchAlgorithmException
- 如果解除对象的算法不可用。 -
InvalidKeyException
- 如果给定的密钥不能用于InvalidKeyException
对象(例如,它具有错误的算法)。 -
NullPointerException
- 如果key
为空。
-
getObject
public final Object getObject(Cipher c) throws IOException, ClassNotFoundException, IllegalBlockSizeException, BadPaddingException
检索原始(封装)对象。在返回之前,封装的对象是未密封的(使用给定的密码,假设密码已经正确初始化)并反序列化。
- 参数
-
c
- 用于c
对象的密码 - 结果
- 原始对象。
- 异常
-
NullPointerException
- 如果给定的密码为空。 -
IOException
- 如果在反序列化期间发生错误 -
ClassNotFoundException
- 如果在反序列化期间发生错误 -
IllegalBlockSizeException
- 如果给定的密码是块密码,则没有请求填充,并且总输入长度不是密码块大小的倍数 -
BadPaddingException
- 如果给定的密码已初始化以进行解密,并且已指定填充,但输入数据没有正确的预期填充字节
-
getObject
public final Object getObject(Key key, String provider) throws IOException, ClassNotFoundException, NoSuchAlgorithmException, NoSuchProviderException, InvalidKeyException
检索原始(封装)对象。该方法使用来自给定
provider
算法的实现,为密封操作中使用的算法创建密码。 使用给定的key
和密封操作中使用的参数(如果有)初始化Cipher对象以进行解密。在返回之前,封装的对象是未密封的和反序列化的。
- 参数
-
key
- 用于key
对象的密钥。 -
provider
- 用于解除对象的算法的提供程序的名称。 - 结果
- 原始对象。
- 异常
-
IllegalArgumentException
- 如果给定的提供者为null或为空。 -
IOException
- 如果在反序列化期间发生错误。 -
ClassNotFoundException
- 如果在反序列化期间发生错误。 -
NoSuchAlgorithmException
- 如果解除对象的算法不可用。 -
NoSuchProviderException
- 如果未配置给定提供程序。 -
InvalidKeyException
- 如果给定的密钥不能用于InvalidKeyException
对象(例如,它具有错误的算法)。 -
NullPointerException
- 如果key
为空。
-
-