java.applet

java.awt

java.awt.color

java.awt.datatransfer

java.awt.dnd

java.awt.event

java.awt.font

java.awt.geom

java.awt.im

java.awt.im.spi

java.awt.image

java.awt.image.renderable

java.awt.print

java.beans

java.beans.beancontext

java.io

java.lang

java.lang.annotation

java.lang.instrument

java.lang.management

java.lang.ref

java.lang.reflect

java.math

java.net

java.nio

java.nio.channels

java.nio.channels.spi

java.nio.charset

java.nio.charset.spi

java.rmi

java.rmi.activation

java.rmi.dgc

java.rmi.registry

java.rmi.server

java.security

java.security.acl

java.security.cert

java.security.interfaces

java.security.spec

java.sql

java.text

java.util

java.util.concurrent

java.util.concurrent.atomic

java.util.concurrent.locks

java.util.jar

java.util.logging

java.util.prefs

java.util.regex

java.util.zip

javax.accessibility

javax.activity

javax.crypto

javax.crypto.interfaces

javax.crypto.spec

javax.imageio

javax.imageio.event

javax.imageio.metadata

javax.imageio.plugins.bmp

javax.imageio.plugins.jpeg

javax.imageio.spi

javax.imageio.stream

javax.management

javax.management.loading

javax.management.modelmbean

javax.management.monitor

javax.management.openmbean

javax.management.relation

javax.management.remote

javax.management.remote.rmi

javax.management.timer

javax.naming

javax.naming.directory

javax.naming.event

javax.naming.ldap

javax.naming.spi

javax.net

javax.net.ssl

javax.print

javax.print.attribute

javax.print.attribute.standard

javax.print.event

javax.rmi

javax.rmi.CORBA

javax.rmi.ssl

javax.security.auth

javax.security.auth.callback

javax.security.auth.kerberos

javax.security.auth.login

javax.security.auth.spi

javax.security.auth.x500

javax.security.cert

javax.security.sasl

javax.sound.midi

javax.sound.midi.spi

javax.sound.sampled

javax.sound.sampled.spi

javax.sql

javax.sql.rowset

javax.sql.rowset.serial

javax.sql.rowset.spi

javax.swing

javax.swing.border

javax.swing.colorchooser

javax.swing.event

javax.swing.filechooser

javax.swing.plaf

javax.swing.plaf.basic

javax.swing.plaf.metal

javax.swing.plaf.multi

javax.swing.plaf.synth

javax.swing.table

javax.swing.text

javax.swing.text

javax.swing.text.parser

javax.swing.text.rtf

javax.swing.tree

javax.swing.undo

javax.transaction

javax.transaction.xa

javax.xml

javax.xml.datatype

javax.xml.namespace

javax.xml.parsers

javax.xml.transform

javax.xml.transform.dom

javax.xml.transform.sax

javax.xml.transform.stream

javax.xml.validation

javax.xml.xpath

org.ietf.jgss

org.omg.CORBA

org.omg.CORBA_2_3

org.omg.CORBA_2_3.portable

org.omg.CORBA.DynAnyPackage

org.omg.CORBA.ORBPackage

org.omg.CORBA.portable

org.omg.CORBA.TypeCodePackage

org.omg.CosNaming

org.omg.CosNaming.NamingContextExtPackage

org.omg.CosNaming.NamingContextPackage

org.omg.Dynamic

org.omg.DynamicAny

org.omg.DynamicAny.DynAnyFactoryPackage

org.omg.DynamicAny.DynAnyPackage

org.omg.IOP

org.omg.IOP.CodecFactoryPackage

org.omg.IOP.CodecPackage

org.omg.Messaging

org.omg.PortableInterceptor

org.omg.PortableInterceptor.ORBInitInfoPackage

org.omg.PortableServer

org.omg.PortableServer.CurrentPackage

org.omg.PortableServer.POAManagerPackage

org.omg.PortableServer.POAPackage

org.omg.PortableServer.portable

org.omg.PortableServer.ServantLocatorPackage

org.omg.SendingContext

org.omg.stub.java.rmi

org.w3c.dom

org.w3c.dom.bootstrap

org.w3c.dom.events

org.w3c.dom.ls

org.xml.sax

org.xml.sax.ext

org.xml.sax.helpers

allclasses-frame

allclasses-noframe

constant-values

deprecated-list

help-doc

JavaTM 2 Platform
Standard Ed. 5.0

javax.crypto
类 SealedObject

java.lang.Object
  继承者 javax.crypto.SealedObject
所有已实现的接口:
Serializable

public class SealedObject
extends Object
implements Serializable

此类使程序员能够用加密算法创建对象并保护其机密性。

在给定任何 Serializable 对象的情况下,程序员可以序列化格式(即“深层复制”)封装原始对象的 SealedObject,并使用 DES 一类的加密算法密封(加密)其序列化的内容,以保护其机密性。加密的内容以后可以解密(使用相应的算法和正确的解密密钥)和反序列化,并生成原始对象。

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

已密封的原始对象可以用以下两种不同的方式恢复:

  • 使用采用 Cipher 对象的 getObject 方法。

    此方法需要一个完全初始化的 Cipher 对象,用极其相同、用来密封对象的算法、密钥、填充方案等进行初始化。

    这样做的好处是解封密封对象的一方不需要知道解密密钥。例如,一方用所需的解密密钥初始化 cipher 对象之后,它就会将 cipher 对象移交给以后要解封密封对象的另一方。

  • 使用采用 Key 对象的 getObject 方法。

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

    这样做的好处是解封此对象的一方不需要跟踪用来密封该对象的参数(如 IV)。

从以下版本开始:
1.4
另请参见:
Cipher, 序列化表格

字段摘要
protected  byte[] encodedParams
          已编码的参数。
 
构造方法摘要
protected SealedObject(SealedObject so)
          根据传入的 SealedObject 构造一个 SealedObject 对象。
  SealedObject(Serializable object, Cipher c)
          从任何 Serializable 对象构造一个 SealedObject。
 
方法摘要
 String getAlgorithm()
          返回用于密封此对象的算法。
 Object getObject(Cipher c)
          检索原始(封装的)对象。
 Object getObject(Key key)
          检索原始(封装的)对象。
 Object getObject(Key key, String provider)
          检索原始(封装的)对象。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

encodedParams

protected byte[] encodedParams
已编码的参数。

构造方法详细信息

SealedObject

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

序列化给定的对象,并使用给定的 Cipher 加密其序列化的内容,其必须完全序列化。

在加密操作中可能使用到的所有算法参数都存储在新的 SealedObject 内。

参数:
object - 要密封的对象;可以为 null。
c - 用于密封对象的密码。
抛出:
NullPointerException - 如果给定的密码为 null。
IOException - 如果在序列化过程中发生错误
IllegalBlockSizeException - 如果给定的密码是块密码、或者该块密码不需要填充,或者总输入长度(即序列化对象内容的长度)不是该密码的块大小的倍数

SealedObject

protected SealedObject(SealedObject so)
根据传入的 SealedObject 构造一个 SealedObject 对象。

参数:
so - SealedObject 对象
抛出:
NullPointerException - 如果给定的密封对象为 null。
方法详细信息

getAlgorithm

public final String getAlgorithm()
返回用于密封此对象的算法。

返回:
用于密封此对象的算法。

getObject

public final Object getObject(Key key)
                       throws IOException,
                              ClassNotFoundException,
                              NoSuchAlgorithmException,
                              InvalidKeyException
检索原始(封装的)对象。

此方法为密封操作中已使用的算法创建一个密码。如果默认提供程序包提供该算法的一个实现,则使用一个包含该实现的 Cipher 实例。如果在默认的包中未提供该算法,则将搜索其他的包。使用给定的 key 和密封操作中已使用的参数(如果有)初始化用于解密的 Cipher 对象。

在返回已封装的对象之前将其解封和反序列化。

参数:
key - 用于解封对象的密钥。
返回:
原始对象。
抛出:
IOException - 如果在反序列化过程中发生错误。
ClassNotFoundException - 如果在反序列化过程中发生错误。
NoSuchAlgorithmException - 如果解封对象的算法不可用。
InvalidKeyException - 如果无法使用给定密钥解封对象(例如其算法错误)。

getObject

public final Object getObject(Cipher c)
                       throws IOException,
                              ClassNotFoundException,
                              IllegalBlockSizeException,
                              BadPaddingException
检索原始(封装的)对象。

在返回已封装的对象之前将其解封(使用给定的 Cipher,假定该 Cipher 已正确初始化)和反序列化。

参数:
c - 用于解封该对象的密码
返回:
原始对象。
抛出:
NullPointerException - 如果给定的密码为 null。
IOException - 如果反序列化过程中发生错误
ClassNotFoundException - 如果在反序列化过程中发生错误
IllegalBlockSizeException - 如果给定密码是块密码、或者不需要填充该块密码,或者总输入长度不是该密码块大小的倍数
BadPaddingException - 如果已初始化用于解密的给定密码,并且指定了填充,但输入数据没有适当的所需填充字节

getObject

public final Object getObject(Key key,
                              String provider)
                       throws IOException,
                              ClassNotFoundException,
                              NoSuchAlgorithmException,
                              NoSuchProviderException,
                              InvalidKeyException
检索原始(封装的)对象。

此方法使用给定 provider 中的算法的实现,为密封操作中已使用的此算法创建一个密码。使用给定的 key 和密封操作中已使用的参数(如果有)初始化用于解密的 Cipher 对象。

返回已封装的对象之前将其解封和反序列化。

参数:
key - 用于解封对象的密钥。
provider - 要解封对象的算法的提供程序名称。
返回:
原始对象。
抛出:
IllegalArgumentException - 如果给定提供程序为 null 或空。
IOException - 如果在反序列化过程中发生错误。
ClassNotFoundException - 如果在反序列化过程中发生错误。
NoSuchAlgorithmException - 如果解封对象的算法不可用。
NoSuchProviderException - 如果未配置给定提供程序。
InvalidKeyException - 如果无法使用给定密钥解封对象(例如其算法错误)。

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策