Module  java.base
软件包  javax.crypto

Class SealedObject

  • All Implemented Interfaces:
    Serializable


    public class SealedObject
    extends Object
    implements Serializable
    该类使程序员能够使用加密算法创建对象并保护其机密性。

    给定任何可序列化对象,可以创建一个SealedObject,以序列化格式(即“深度拷贝”)封装原始对象,并使用DES等加密算法对其序列化内容进行封装(加密),以保护其机密性。 加密的内容可以随后被解密(使用相应的算法使用正确的解密密钥)并解串行化,产生原始对象。

    请注意,在应用于SealedObject之前,必须使用正确的算法,密钥,填充方案等将密码对象完全初始化。

    密封的原始物体可以通过两种不同的方法进行回收:

    • 通过使用Cipher对象的getObject方法。

      该方法需要一个完全初始化的对象,用与Cipher对象相同的算法,密钥,填充方案等进行初始化。

      这种方法的优点在于,开封密封对象的一方不需要知道解密密钥。 例如,在一方已经用所需的解密密钥初始化密码对象之后,它可以将密码对象交给另一方,然后该密码对象就开封密封对象。

    • 通过使用中的所述一个getObject方法称取一个Key对象。

      在这种方法中, getObject方法为适当的解密算法创建一个密码对象,并使用给定的解密密钥和存储在密封对象中的算法参数(如果有的话)进行初始化。

      这种方法的优点在于,开封对象的方不需要跟踪用于密封对象的参数(例如,IV)。

    从以下版本开始:
    1.4
    另请参见:
    CipherSerialized Form
    • 字段详细信息

      • encodedParams

        protected byte[] encodedParams
        密码密码使用的密码参数,以默认格式编码。

        cipher.getParameters().getEncoded()

    • 构造方法详细信息

      • SealedObject

        public SealedObject​(Serializable object,
                            Cipher c)
                     throws IOException,
                            IllegalBlockSizeException
        从任何可序列化对象构造一个SealedObject。

        给定的对象被序列化,并且其序列化内容使用给定的密码进行加密,该密码必须被完全初始化。

        可能在加密操作中使用的任何算法参数都存储在新的SealedObject

        参数
        object - 要密封的物体; 可以为空。
        c - 用于密封对象的密码。
        异常
        NullPointerException - 如果给定的密码为空。
        IOException - 如果在序列化期间发生错误
        IllegalBlockSizeException - 如果给定的密码是块密码,则不会请求填充,并且总输入长度(即,序列化对象内容的长度)不是密码块大小的倍数
      • SealedObject

        protected SealedObject​(SealedObject so)
        从传入的SealedObject构造一个SealedObject对象。
        参数
        so - 一个SealedObject对象
        异常
        NullPointerException - 如果给定的密封对象为空。