uTools-Manuals/docs/java/javax/crypto/SealedObject.html

411 lines
22 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="header">
<div class="subTitle">
javax.crypto
</div>
<h2 class="title" title="Class SealedObject">Class SealedObject</h2>
</div><div class="contentContainer">
<ul class="inheritance">
<li><a href="../../java/lang/Object.html" title="class in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>javax.crypto.SealedObject</li>
</ul> </li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>
All Implemented Interfaces:
</dt>
<dd>
<span><a href="../../java/io/Serializable.html" title="java.io中的接口">Serializable</a></span>
</dd>
</dl>
<hr/> <br/> <pre>public class <span class="typeNameLabel">SealedObject</span>
extends <a href="../../java/lang/Object.html" title="class in java.lang">Object</a>
implements <a href="../../java/io/Serializable.html" title="interface in java.io">Serializable</a></pre>
<div class="block">
<span>该类使程序员能够使用加密算法创建对象并保护其机密性。</span>
<p> <span>给定任何可序列化对象可以创建一个SealedObject以序列化格式即“深度拷贝”封装原始对象并使用DES等加密算法对其序列化内容进行封装加密以保护其机密性。</span> <span>加密的内容可以随后被解密(使用相应的算法使用正确的解密密钥)并解串行化,产生原始对象。</span> </p>
<p> <span>请注意在应用于SealedObject之前必须使用正确的算法密钥填充方案等将密码对象完全初始化。</span> </p>
<p> <span>密封的原始物体可以通过两种不同的方法进行回收:</span> </p>
<ul>
<li> <span>通过使用<code>Cipher</code>对象的<a href="../../javax/crypto/SealedObject.html#getObject-javax.crypto.Cipher-"><code>getObject</code></a>方法。</span> <p> <span>该方法需要完全初始化<code>Cipher</code>对象,用与<code>Cipher</code>对象相同的算法,密钥,填充方案等进行初始化。</span> </p><p> <span>这种方法的优点在于,开封密封对象的一方不需要知道解密密钥。</span> <span>例如,在一方已经用所需的解密密钥初始化密码对象之后,它可以将密码对象交给另一方,然后该密码对象就开封密封对象。</span> </p></li>
<li> <span>通过使用<code>Key</code>对象的<a href="../../javax/crypto/SealedObject.html#getObject-java.security.Key-"><code>getObject</code></a>方法之一。</span> <p> <span>在这种方法中, <code>getObject</code>方法为<code>getObject</code>算法创建一个密码对象,并使用给定的解密密钥和存储在密封对象中的算法参数(如果有的话)进行初始化。</span> </p><p> <span>这种方法的优点在于开封对象的方不需要跟踪用于密封对象的参数例如IV</span> </p></li>
</ul>
</div>
<dl>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
1.4
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<span><a href="../../javax/crypto/Cipher.html" title="javax.crypto中的类"><code>Cipher</code></a> <a href="../../serialized-form.html#javax.crypto.SealedObject">Serialized Form</a></span>
</dd>
</dl> </li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- --> </a> <h3>Field Summary</h3>
<table border="0" cellpadding="3" cellspacing="0" class="memberSummary" summary="Field Summary table, listing fields, and an explanation">
<caption>
<span>Fields</span>
<span class="tabEnd"> </span>
</caption>
<tbody>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected byte[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/SealedObject.html#encodedParams">encodedParams</a></span></code>
<div class="block">
密码密码使用的密码参数,以默认格式编码。
</div> </td>
</tr>
</tbody>
</table> </li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- --> </a> <h3>构造方法摘要</h3>
<table border="0" cellpadding="3" cellspacing="0" class="memberSummary" summary="Constructor Summary table, listing constructors, and an explanation">
<caption>
<span>构造方法</span>
<span class="tabEnd"> </span>
</caption>
<tbody>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colLast" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/SealedObject.html#SealedObject-javax.crypto.SealedObject-">SealedObject</a></span>(<a href="../../javax/crypto/SealedObject.html" title="class in javax.crypto">SealedObject</a> so)</code>
<div class="block">
从传入的SealedObject构造一个SealedObject对象。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code> </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/SealedObject.html#SealedObject-java.io.Serializable-javax.crypto.Cipher-">SealedObject</a></span>(<a href="../../java/io/Serializable.html" title="interface in java.io">Serializable</a> object, <a href="../../javax/crypto/Cipher.html" title="class in javax.crypto">Cipher</a> c)</code>
<div class="block">
从任何可序列化对象构造一个SealedObject。
</div> </td>
</tr>
</tbody>
</table> </li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- --> </a> <h3>方法摘要</h3>
<table border="0" cellpadding="3" cellspacing="0" class="memberSummary" summary="Method Summary table, listing methods, and an explanation">
<caption>
<span class="activeTableTab" id="t0"><span>所有方法</span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t2"><span><a href="javascript:show(2);">接口方法</a></span><span class="tabEnd"> </span></span>
<span class="tableTab" id="t4"><span><a href="javascript:show(8);">具体的方法</a></span><span class="tabEnd"> </span></span>
</caption>
<tbody>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor" id="i0">
<td class="colFirst"><code><a href="../../java/lang/String.html" title="class in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/SealedObject.html#getAlgorithm--">getAlgorithm</a></span>()</code>
<div class="block">
返回用于密封此对象的算法。
</div> </td>
</tr>
<tr class="rowColor" id="i1">
<td class="colFirst"><code><a href="../../java/lang/Object.html" title="class in java.lang">Object</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/SealedObject.html#getObject-javax.crypto.Cipher-">getObject</a></span>(<a href="../../javax/crypto/Cipher.html" title="class in javax.crypto">Cipher</a> c)</code>
<div class="block">
检索原始(封装)对象。
</div> </td>
</tr>
<tr class="altColor" id="i2">
<td class="colFirst"><code><a href="../../java/lang/Object.html" title="class in java.lang">Object</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/SealedObject.html#getObject-java.security.Key-">getObject</a></span>(<a href="../../java/security/Key.html" title="interface in java.security">Key</a> key)</code>
<div class="block">
检索原始(封装)对象。
</div> </td>
</tr>
<tr class="rowColor" id="i3">
<td class="colFirst"><code><a href="../../java/lang/Object.html" title="class in java.lang">Object</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/SealedObject.html#getObject-java.security.Key-java.lang.String-">getObject</a></span>(<a href="../../java/security/Key.html" title="interface in java.security">Key</a> key, <a href="../../java/lang/String.html" title="class in java.lang">String</a> provider)</code>
<div class="block">
检索原始(封装)对象。
</div> </td>
</tr>
</tbody>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- --> </a> <h3>Methods inherited from class java.lang.<a href="../../java/lang/Object.html" title="class in java.lang">Object</a></h3> <code><a href="../../java/lang/Object.html#clone--">clone</a>, <a href="../../java/lang/Object.html#equals-java.lang.Object-">equals</a>, <a href="../../java/lang/Object.html#finalize--">finalize</a>, <a href="../../java/lang/Object.html#getClass--">getClass</a>, <a href="../../java/lang/Object.html#hashCode--">hashCode</a>, <a href="../../java/lang/Object.html#notify--">notify</a>, <a href="../../java/lang/Object.html#notifyAll--">notifyAll</a>, <a href="../../java/lang/Object.html#toString--">toString</a>, <a href="../../java/lang/Object.html#wait--">wait</a>, <a href="../../java/lang/Object.html#wait-long-">wait</a>, <a href="../../java/lang/Object.html#wait-long-int-">wait</a></code></li>
</ul> </li>
</ul> </li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- --> </a> <h3>字段详细信息</h3> <a name="encodedParams">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>encodedParams</h4> <pre>protected byte[] encodedParams</pre>
<div class="block">
<span>密码密码使用的密码参数,以默认格式编码。</span>
<p> <span>也就是<code>cipher.getParameters().getEncoded()</code></span> </p>
</div> </li>
</ul> </li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- --> </a> <h3>构造方法详细信息</h3> <a name="SealedObject-java.io.Serializable-javax.crypto.Cipher-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>SealedObject</h4> <pre>public SealedObject(<a href="../../java/io/Serializable.html" title="interface in java.io">Serializable</a> object,
<a href="../../javax/crypto/Cipher.html" title="class in javax.crypto">Cipher</a> c)
throws <a href="../../java/io/IOException.html" title="class in java.io">IOException</a>,
<a href="../../javax/crypto/IllegalBlockSizeException.html" title="class in javax.crypto">IllegalBlockSizeException</a></pre>
<div class="block">
<span>从任何可序列化对象构造一个SealedObject。</span>
<p> <span>给定的对象被序列化,并且其序列化内容使用给定的密码进行加密,该密码必须被完全初始化。</span> </p>
<p> <span>可能在加密操作中使用的任何算法参数都存储在新的<code>SealedObject</code></span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<span><code>object</code> - 要密封的物体;</span>
<span>可以为空。</span>
</dd>
<dd>
<code>c</code> - 用于密封对象的密码。
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/lang/NullPointerException.html" title="class in java.lang">NullPointerException</a></code> - 如果给定的密码为空。
</dd>
<dd>
<code><a href="../../java/io/IOException.html" title="class in java.io">IOException</a></code> - 如果在序列化期间发生错误
</dd>
<dd>
<code><a href="../../javax/crypto/IllegalBlockSizeException.html" title="class in javax.crypto">IllegalBlockSizeException</a></code> - 如果给定的密码是块密码,则不会请求填充,并且总输入长度(即,序列化对象内容的长度)不是密码块大小的倍数
</dd>
</dl> </li>
</ul> <a name="SealedObject-javax.crypto.SealedObject-">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>SealedObject</h4> <pre>protected SealedObject(<a href="../../javax/crypto/SealedObject.html" title="class in javax.crypto">SealedObject</a> so)</pre>
<div class="block">
从传入的SealedObject构造一个SealedObject对象。
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>so</code> - 一个SealedObject对象
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/lang/NullPointerException.html" title="class in java.lang">NullPointerException</a></code> - 如果给定的密封对象为空。
</dd>
</dl> </li>
</ul> </li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- --> </a> <h3>方法详细信息</h3> <a name="getAlgorithm--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getAlgorithm</h4> <pre>public final <a href="../../java/lang/String.html" title="class in java.lang">String</a> getAlgorithm()</pre>
<div class="block">
返回用于密封此对象的算法。
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
用于密封该对象的算法。
</dd>
</dl> </li>
</ul> <a name="getObject-java.security.Key-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getObject</h4> <pre>public final <a href="../../java/lang/Object.html" title="class in java.lang">Object</a> getObject(<a href="../../java/security/Key.html" title="interface in java.security">Key</a> key)
throws <a href="../../java/io/IOException.html" title="class in java.io">IOException</a>,
<a href="../../java/lang/ClassNotFoundException.html" title="class in java.lang">ClassNotFoundException</a>,
<a href="../../java/security/NoSuchAlgorithmException.html" title="class in java.security">NoSuchAlgorithmException</a>,
<a href="../../java/security/InvalidKeyException.html" title="class in java.security">InvalidKeyException</a></pre>
<div class="block">
<span>检索原始(封装)对象。</span>
<p> <span>该方法为密封操作中使用的算法创建一个密码。</span> <span>如果默认提供程序包提供了该算法的实现则使用包含该实现的Cipher的实例。</span> <span>如果算法在默认包中不可用,则会搜索其他包。</span> <span>使用给定的<code>key</code>和密封操作中使用的参数(如果有),将密码对象初始化以进行解密。</span> </p>
<p> <span>封装的对象在被返回之前是未密封的并被解除序列化的。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>key</code> - 用于开封对象的键。
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
原来的对象。
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/io/IOException.html" title="class in java.io">IOException</a></code> - 如果在排序期间发生错误。
</dd>
<dd>
<code><a href="../../java/lang/ClassNotFoundException.html" title="class in java.lang">ClassNotFoundException</a></code> - 如果在排序期间发生错误。
</dd>
<dd>
<code><a href="../../java/security/NoSuchAlgorithmException.html" title="class in java.security">NoSuchAlgorithmException</a></code> - 如果解封对象的算法不可用。
</dd>
<dd>
<code><a href="../../java/security/InvalidKeyException.html" title="class in java.security">InvalidKeyException</a></code> - 如果给定的键不能用于解封对象(例如,它有错误的算法)。
</dd>
<dd>
<code><a href="../../java/lang/NullPointerException.html" title="class in java.lang">NullPointerException</a></code> - 如果
<code>key</code>为空。
</dd>
</dl> </li>
</ul> <a name="getObject-javax.crypto.Cipher-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getObject</h4> <pre>public final <a href="../../java/lang/Object.html" title="class in java.lang">Object</a> getObject(<a href="../../javax/crypto/Cipher.html" title="class in javax.crypto">Cipher</a> c)
throws <a href="../../java/io/IOException.html" title="class in java.io">IOException</a>,
<a href="../../java/lang/ClassNotFoundException.html" title="class in java.lang">ClassNotFoundException</a>,
<a href="../../javax/crypto/IllegalBlockSizeException.html" title="class in javax.crypto">IllegalBlockSizeException</a>,
<a href="../../javax/crypto/BadPaddingException.html" title="class in javax.crypto">BadPaddingException</a></pre>
<div class="block">
<span>检索原始(封装)对象。</span>
<p> <span>封装的对象是未密封的使用给定的Cipher假设密码已被正确初始化并被取消序列化然后返回。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>c</code> - 用于解密对象的密码
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
原来的对象。
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/lang/NullPointerException.html" title="class in java.lang">NullPointerException</a></code> - 如果给定的密码为空。
</dd>
<dd>
<code><a href="../../java/io/IOException.html" title="class in java.io">IOException</a></code> - 如果在排序期间发生错误
</dd>
<dd>
<code><a href="../../java/lang/ClassNotFoundException.html" title="class in java.lang">ClassNotFoundException</a></code> - 如果在排序期间发生错误
</dd>
<dd>
<code><a href="../../javax/crypto/IllegalBlockSizeException.html" title="class in javax.crypto">IllegalBlockSizeException</a></code> - 如果给定的密码是块密码,则不会请求填充,总输入长度不是密码块大小的倍数
</dd>
<dd>
<code><a href="../../javax/crypto/BadPaddingException.html" title="class in javax.crypto">BadPaddingException</a></code> - 如果给定的密码已被初始化用于解密,并且已经指定了填充,但是输入数据没有适当的预期填充字节
</dd>
</dl> </li>
</ul> <a name="getObject-java.security.Key-java.lang.String-">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>getObject</h4> <pre>public final <a href="../../java/lang/Object.html" title="class in java.lang">Object</a> getObject(<a href="../../java/security/Key.html" title="interface in java.security">Key</a> key,
<a href="../../java/lang/String.html" title="class in java.lang">String</a> provider)
throws <a href="../../java/io/IOException.html" title="class in java.io">IOException</a>,
<a href="../../java/lang/ClassNotFoundException.html" title="class in java.lang">ClassNotFoundException</a>,
<a href="../../java/security/NoSuchAlgorithmException.html" title="class in java.security">NoSuchAlgorithmException</a>,
<a href="../../java/security/NoSuchProviderException.html" title="class in java.security">NoSuchProviderException</a>,
<a href="../../java/security/InvalidKeyException.html" title="class in java.security">InvalidKeyException</a></pre>
<div class="block">
<span>检索原始(封装)对象。</span>
<p> <span>该方法为密封操作中使用的算法创建一个密码使用从给定的provider中的该算法的<code>provider</code></span> <span>使用给定的<code>key</code>和密封操作中使用的参数(如果有),将密码对象初始化以进行解密。</span> </p>
<p> <span>封装的对象在被返回之前是未密封的并被解除序列化的。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>key</code> - 用于打开对象的密钥。
</dd>
<dd>
<code>provider</code> - 打开对象的算法提供者的名称。
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
原来的对象。
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></code> - 如果给定的提供者为空或为空。
</dd>
<dd>
<code><a href="../../java/io/IOException.html" title="class in java.io">IOException</a></code> - 如果在排序期间发生错误。
</dd>
<dd>
<code><a href="../../java/lang/ClassNotFoundException.html" title="class in java.lang">ClassNotFoundException</a></code> - 如果在排序期间发生错误。
</dd>
<dd>
<code><a href="../../java/security/NoSuchAlgorithmException.html" title="class in java.security">NoSuchAlgorithmException</a></code> - 如果解封对象的算法不可用。
</dd>
<dd>
<code><a href="../../java/security/NoSuchProviderException.html" title="class in java.security">NoSuchProviderException</a></code> - 如果给定的提供程序未配置。
</dd>
<dd>
<code><a href="../../java/security/InvalidKeyException.html" title="class in java.security">InvalidKeyException</a></code> - 如果给定的键不能用于解封对象(例如,它有错误的算法)。
</dd>
<dd>
<code><a href="../../java/lang/NullPointerException.html" title="class in java.lang">NullPointerException</a></code> - 如果
<code>key</code>为空。
</dd>
</dl> </li>
</ul> </li>
</ul> </li>
</ul>
</div>
</div>