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

353 lines
20 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 KeyAgreementSpi">Class KeyAgreementSpi</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.KeyAgreementSpi</li>
</ul> </li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr/> <br/> <pre>public abstract class <span class="typeNameLabel">KeyAgreementSpi</span>
extends <a href="../../java/lang/Object.html" title="class in java.lang">Object</a></pre>
<div class="block">
<span>这个类定义的 <span>SPI</span> <code>KeyAgreement</code>类。</span>
<span>该类中的所有抽象方法必须由希望提供特定密钥协商算法的实现的每个加密服务提供商来实现。</span>
<p> <span>密钥生成器( <code>KeyPairGenerator</code><code>KeyGenerator</code> <code>KeyFactory</code>中的一个或由密钥协商协议( <a href="../../javax/crypto/KeyAgreementSpi.html#engineDoPhase-java.security.Key-boolean-"><code>engineDoPhase</code></a> )的中间阶段的结果创建共享秘密所涉及的密钥。</span> </p>
<p> <span>对于密钥交换中的<code>engineDoPhase</code>需要调用<code>engineDoPhase</code></span> <span>例如,如果与另一方进行密钥交换, <code>engineDoPhase</code>需要被调用一次,其中<code>lastPhase</code>标志设置为<code>true</code></span> <span>如果密钥交换是与另外两方, <code>engineDoPhase</code>需要被叫两次,首次将<code>lastPhase</code>标志设置为<code>false</code> ,第二次设置为<code>true</code></span> <span>密钥交换中可能存在任何数量的参与方。</span> </p>
</div>
<dl>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
1.4
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<span><a href="../../javax/crypto/KeyGenerator.html" title="javax.crypto中的类"><code>KeyGenerator</code></a> <a href="../../javax/crypto/SecretKey.html" title="javax.crypto中的接口"><code>SecretKey</code></a></span>
</dd>
</dl> </li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== 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="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../javax/crypto/KeyAgreementSpi.html#KeyAgreementSpi--">KeyAgreementSpi</a></span>()</code> </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="t3"><span><a href="javascript:show(4);">抽象方法</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>protected abstract <a href="../../java/security/Key.html" title="interface in java.security">Key</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/KeyAgreementSpi.html#engineDoPhase-java.security.Key-boolean-">engineDoPhase</a></span>(<a href="../../java/security/Key.html" title="interface in java.security">Key</a> key, boolean lastPhase)</code>
<div class="block">
执行该关键协议的下一阶段,其中包含从本协议涉及的其中一方收到的给定密钥。
</div> </td>
</tr>
<tr class="rowColor" id="i1">
<td class="colFirst"><code>protected abstract byte[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/KeyAgreementSpi.html#engineGenerateSecret--">engineGenerateSecret</a></span>()</code>
<div class="block">
生成共享密钥并将其返回到新的缓冲区。
</div> </td>
</tr>
<tr class="altColor" id="i2">
<td class="colFirst"><code>protected abstract int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/KeyAgreementSpi.html#engineGenerateSecret-byte:A-int-">engineGenerateSecret</a></span>(byte[] sharedSecret, int offset)</code>
<div class="block">
生成共享密钥,并将其放入缓冲区
<code>sharedSecret</code> ,从
<code>offset</code>开始。
</div> </td>
</tr>
<tr class="rowColor" id="i3">
<td class="colFirst"><code>protected abstract <a href="../../javax/crypto/SecretKey.html" title="interface in javax.crypto">SecretKey</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/KeyAgreementSpi.html#engineGenerateSecret-java.lang.String-">engineGenerateSecret</a></span>(<a href="../../java/lang/String.html" title="class in java.lang">String</a> algorithm)</code>
<div class="block">
创建共享密钥,并将其作为请求的算法类型的秘密密钥对象返回。
</div> </td>
</tr>
<tr class="altColor" id="i4">
<td class="colFirst"><code>protected abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/KeyAgreementSpi.html#engineInit-java.security.Key-java.security.spec.AlgorithmParameterSpec-java.security.SecureRandom-">engineInit</a></span>(<a href="../../java/security/Key.html" title="interface in java.security">Key</a> key, <a href="../../java/security/spec/AlgorithmParameterSpec.html" title="interface in java.security.spec">AlgorithmParameterSpec</a> params, <a href="../../java/security/SecureRandom.html" title="class in java.security">SecureRandom</a> random)</code>
<div class="block">
使用给定的密钥,算法参数集合和随机源初始化此密钥协议。
</div> </td>
</tr>
<tr class="rowColor" id="i5">
<td class="colFirst"><code>protected abstract void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/KeyAgreementSpi.html#engineInit-java.security.Key-java.security.SecureRandom-">engineInit</a></span>(<a href="../../java/security/Key.html" title="interface in java.security">Key</a> key, <a href="../../java/security/SecureRandom.html" title="class in java.security">SecureRandom</a> random)</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">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- --> </a> <h3>构造方法详细信息</h3> <a name="KeyAgreementSpi--">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>KeyAgreementSpi</h4> <pre>public KeyAgreementSpi()</pre> </li>
</ul> </li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- --> </a> <h3>方法详细信息</h3> <a name="engineInit-java.security.Key-java.security.SecureRandom-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>engineInit</h4> <pre>protected abstract void engineInit(<a href="../../java/security/Key.html" title="interface in java.security">Key</a> key,
<a href="../../java/security/SecureRandom.html" title="class in java.security">SecureRandom</a> random)
throws <a href="../../java/security/InvalidKeyException.html" title="class in java.security">InvalidKeyException</a></pre>
<div class="block">
<span>用给定的密钥和随机源初始化这个密钥协商。</span>
<span>给定密钥需要包含此密钥协议所需的所有算法参数。</span>
<p> <span>如果密钥协商算法需要随机字节,它得到他们的随机性,给定源<code>random</code></span> <span>但是,如果底层算法实现不需要任何随机字节,则忽略<code>random</code></span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<span><code>key</code> - 党的私人信息。</span>
<span>例如在Diffie-Hellman密钥协议的情况下这将是该方自己的Diffie-Hellman私钥。</span>
</dd>
<dd>
<code>random</code> -
<code>random</code>的来源
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/security/InvalidKeyException.html" title="class in java.security">InvalidKeyException</a></code> - 如果给定的密钥对于该密钥协议是不合适的,例如,是错误的类型或具有不兼容的算法类型。
</dd>
</dl> </li>
</ul> <a name="engineInit-java.security.Key-java.security.spec.AlgorithmParameterSpec-java.security.SecureRandom-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>engineInit</h4> <pre>protected abstract void engineInit(<a href="../../java/security/Key.html" title="interface in java.security">Key</a> key,
<a href="../../java/security/spec/AlgorithmParameterSpec.html" title="interface in java.security.spec">AlgorithmParameterSpec</a> params,
<a href="../../java/security/SecureRandom.html" title="class in java.security">SecureRandom</a> random)
throws <a href="../../java/security/InvalidKeyException.html" title="class in java.security">InvalidKeyException</a>,
<a href="../../java/security/InvalidAlgorithmParameterException.html" title="class in java.security">InvalidAlgorithmParameterException</a></pre>
<div class="block">
使用给定的密钥,算法参数集合和随机源初始化此密钥协议。
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<span><code>key</code> - 党的私人信息。</span>
<span>例如在Diffie-Hellman密钥协议的情况下这将是该方自己的Diffie-Hellman私钥。</span>
</dd>
<dd>
<code>params</code> - 关键协议参数
</dd>
<dd>
<code>random</code> -
<code>random</code>的来源
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/security/InvalidKeyException.html" title="class in java.security">InvalidKeyException</a></code> - 如果给定的密钥对于该密钥协议是不合适的,例如,是错误的类型或具有不兼容的算法类型。
</dd>
<dd>
<code><a href="../../java/security/InvalidAlgorithmParameterException.html" title="class in java.security">InvalidAlgorithmParameterException</a></code> - 如果给定的参数不适合此密钥协议。
</dd>
</dl> </li>
</ul> <a name="engineDoPhase-java.security.Key-boolean-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>engineDoPhase</h4> <pre>protected abstract <a href="../../java/security/Key.html" title="interface in java.security">Key</a> engineDoPhase(<a href="../../java/security/Key.html" title="interface in java.security">Key</a> key,
boolean lastPhase)
throws <a href="../../java/security/InvalidKeyException.html" title="class in java.security">InvalidKeyException</a>,
<a href="../../java/lang/IllegalStateException.html" title="class in java.lang">IllegalStateException</a></pre>
<div class="block">
执行该关键协议的下一阶段,其中包含从本协议涉及的其中一方收到的给定密钥。
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<span><code>key</code> - 这个阶段的关键。</span>
<span>例如在双方之间的Diffie-Hellman的情况下这将是对方的Diffie-Hellman公钥。</span>
</dd>
<dd>
<code>lastPhase</code> - 表示这是否是此密钥协议的最后一个阶段的标志。
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
由此阶段产生的中间密钥如果此阶段不产生密钥则为null
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/security/InvalidKeyException.html" title="class in java.security">InvalidKeyException</a></code> - 如果给定的关键字不适合此阶段。
</dd>
<dd>
<code><a href="../../java/lang/IllegalStateException.html" title="class in java.lang">IllegalStateException</a></code> - 如果此密钥协议尚未初始化。
</dd>
</dl> </li>
</ul> <a name="engineGenerateSecret--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>engineGenerateSecret</h4> <pre>protected abstract byte[] engineGenerateSecret()
throws <a href="../../java/lang/IllegalStateException.html" title="class in java.lang">IllegalStateException</a></pre>
<div class="block">
<span>生成共享密钥并将其返回到新的缓冲区。</span>
<p> <span>此方法重置此<code>KeyAgreementSpi</code>对象,以便可以重新用于进一步的关键协议。</span> <span>除非使用<code>engineInit</code>方法重新初始化该密钥协议,否则相同的私有信息和算法参数将用于后续密钥协议。</span> </p>
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
新的缓冲区与共享的秘密
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/lang/IllegalStateException.html" title="class in java.lang">IllegalStateException</a></code> - 如果此关键协议尚未完成
</dd>
</dl> </li>
</ul> <a name="engineGenerateSecret-byte:A-int-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>engineGenerateSecret</h4> <pre>protected abstract int engineGenerateSecret(byte[] sharedSecret,
int offset)
throws <a href="../../java/lang/IllegalStateException.html" title="class in java.lang">IllegalStateException</a>,
<a href="../../javax/crypto/ShortBufferException.html" title="class in javax.crypto">ShortBufferException</a></pre>
<div class="block">
<span>生成共享密钥,并将其放入缓冲区<code>sharedSecret</code> (从<code>offset</code>开始)。</span>
<p> <span>如果<code>sharedSecret</code>缓冲区太小而不能保存结果,则抛出<code>ShortBufferException</code></span> <span>在这种情况下,应该使用较大的输出缓冲区来重复此调用。</span> </p>
<p> <span>此方法重置此<code>KeyAgreementSpi</code>对象,以便可以重新用于进一步的关键协议。</span> <span>除非使用<code>engineInit</code>方法之一重新初始化该密钥协议,否则相同的私有信息和算法参数将用于后续密钥协议。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>sharedSecret</code> - 共享密码的缓冲区
</dd>
<dd>
<code>offset</code> -
<code>sharedSecret</code>中的共享密码将被存储的偏移量
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
放入
<code>sharedSecret</code>的字节数
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/lang/IllegalStateException.html" title="class in java.lang">IllegalStateException</a></code> - 如果此关键协议尚未完成
</dd>
<dd>
<code><a href="../../javax/crypto/ShortBufferException.html" title="class in javax.crypto">ShortBufferException</a></code> - 如果给定的输出缓冲区太小,不能容纳秘密
</dd>
</dl> </li>
</ul> <a name="engineGenerateSecret-java.lang.String-">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>engineGenerateSecret</h4> <pre>protected abstract <a href="../../javax/crypto/SecretKey.html" title="interface in javax.crypto">SecretKey</a> engineGenerateSecret(<a href="../../java/lang/String.html" title="class in java.lang">String</a> algorithm)
throws <a href="../../java/lang/IllegalStateException.html" title="class in java.lang">IllegalStateException</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>此方法重置此<code>KeyAgreementSpi</code>对象,以便可以重新用于进一步的关键协议。</span> <span>除非使用<code>engineInit</code>方法之一重新初始化该密钥协议,否则相同的私有信息和算法参数将用于后续密钥协议。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>algorithm</code> - 所请求的秘密密钥算法
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
共享密钥
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/lang/IllegalStateException.html" title="class in java.lang">IllegalStateException</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>
</dl> </li>
</ul> </li>
</ul> </li>
</ul>
</div>
</div>