753 lines
34 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 Mac">Class Mac</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.Mac</li>
</ul> </li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>
All Implemented Interfaces:
</dt>
<dd>
<span><a href="../../java/lang/Cloneable.html" title="java.lang中的接口">Cloneable</a></span>
</dd>
</dl>
<hr/> <br/> <pre>public class <span class="typeNameLabel">Mac</span>
extends <a href="../../java/lang/Object.html" title="class in java.lang">Object</a>
implements <a href="../../java/lang/Cloneable.html" title="interface in java.lang">Cloneable</a></pre>
<div class="block">
<span>该类提供了“消息验证码”MAC算法的功能。</span>
<p> <span>MAC提供了一种基于秘密密钥来检查在不可靠介质中传输或存储在信息中的信息的完整性的方法。</span> <span>通常,在共享密钥的两方之间使用消息认证码,以验证在这些方之间传输的信息。</span> </p>
<p> <span>基于加密散列函数的MAC机制被称为HMAC。</span> <span>HMAC可以与任何加密散列函数一起使用例如MD5或SHA-1与秘密共享密钥的组合。</span> <span>HMAC在RFC 2104中规定。</span> </p>
<p> <span>Java平台的每个实现都需要支持以下标准<code>Mac</code>算法:</span> </p>
<ul>
<li> <span><tt>HmacMD5</tt></span> </li>
<li> <span><tt>HmacSHA1</tt></span> </li>
<li> <span><tt>HmacSHA256</tt></span> </li>
</ul>
<span>这些算法的描述<a href="../../../technotes/guides/security/StandardNames.html#Mac">Mac section</a> Java加密体系结构标准算法名称的文档。</span>
<span>请参阅发行说明文件以了解是否支持其他算法。</span>
</div>
<dl>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
1.4
</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="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/Mac.html#Mac-javax.crypto.MacSpi-java.security.Provider-java.lang.String-">Mac</a></span>(<a href="../../javax/crypto/MacSpi.html" title="class in javax.crypto">MacSpi</a> macSpi, <a href="../../java/security/Provider.html" title="class in java.security">Provider</a> provider, <a href="../../java/lang/String.html" title="class in java.lang">String</a> algorithm)</code>
<div class="block">
创建MAC对象。
</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="t1"><span><a href="javascript:show(1);">静态方法</a></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/Object.html" title="class in java.lang">Object</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/Mac.html#clone--">clone</a></span>()</code>
<div class="block">
如果提供程序实现是可克隆的,则返回克隆。
</div> </td>
</tr>
<tr class="rowColor" id="i1">
<td class="colFirst"><code>byte[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/Mac.html#doFinal--">doFinal</a></span>()</code>
<div class="block">
完成MAC操作。
</div> </td>
</tr>
<tr class="altColor" id="i2">
<td class="colFirst"><code>byte[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/Mac.html#doFinal-byte:A-">doFinal</a></span>(byte[] input)</code>
<div class="block">
处理给定的字节数组并完成MAC操作。
</div> </td>
</tr>
<tr class="rowColor" id="i3">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/Mac.html#doFinal-byte:A-int-">doFinal</a></span>(byte[] output, int outOffset)</code>
<div class="block">
完成MAC操作。
</div> </td>
</tr>
<tr class="altColor" id="i4">
<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/Mac.html#getAlgorithm--">getAlgorithm</a></span>()</code>
<div class="block">
返回此
<code>Mac</code>对象的算法名称。
</div> </td>
</tr>
<tr class="rowColor" id="i5">
<td class="colFirst"><code>static <a href="../../javax/crypto/Mac.html" title="class in javax.crypto">Mac</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/Mac.html#getInstance-java.lang.String-">getInstance</a></span>(<a href="../../java/lang/String.html" title="class in java.lang">String</a> algorithm)</code>
<div class="block">
返回实现指定MAC算法的
<code>Mac</code>对象。
</div> </td>
</tr>
<tr class="altColor" id="i6">
<td class="colFirst"><code>static <a href="../../javax/crypto/Mac.html" title="class in javax.crypto">Mac</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/Mac.html#getInstance-java.lang.String-java.security.Provider-">getInstance</a></span>(<a href="../../java/lang/String.html" title="class in java.lang">String</a> algorithm, <a href="../../java/security/Provider.html" title="class in java.security">Provider</a> provider)</code>
<div class="block">
返回实现指定MAC算法的
<code>Mac</code>对象。
</div> </td>
</tr>
<tr class="rowColor" id="i7">
<td class="colFirst"><code>static <a href="../../javax/crypto/Mac.html" title="class in javax.crypto">Mac</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/Mac.html#getInstance-java.lang.String-java.lang.String-">getInstance</a></span>(<a href="../../java/lang/String.html" title="class in java.lang">String</a> algorithm, <a href="../../java/lang/String.html" title="class in java.lang">String</a> provider)</code>
<div class="block">
返回实现指定的MAC算法的
<code>Mac</code>对象。
</div> </td>
</tr>
<tr class="altColor" id="i8">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/Mac.html#getMacLength--">getMacLength</a></span>()</code>
<div class="block">
以字节为单位返回MAC的长度。
</div> </td>
</tr>
<tr class="rowColor" id="i9">
<td class="colFirst"><code><a href="../../java/security/Provider.html" title="class in java.security">Provider</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/Mac.html#getProvider--">getProvider</a></span>()</code>
<div class="block">
返回此
<code>Mac</code>对象的提供者。
</div> </td>
</tr>
<tr class="altColor" id="i10">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/Mac.html#init-java.security.Key-">init</a></span>(<a href="../../java/security/Key.html" title="interface in java.security">Key</a> key)</code>
<div class="block">
使用给定的键初始化此
<code>Mac</code>对象。
</div> </td>
</tr>
<tr class="rowColor" id="i11">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/Mac.html#init-java.security.Key-java.security.spec.AlgorithmParameterSpec-">init</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)</code>
<div class="block">
使用给定的键和算法参数初始化此
<code>Mac</code>对象。
</div> </td>
</tr>
<tr class="altColor" id="i12">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/Mac.html#reset--">reset</a></span>()</code>
<div class="block">
重设此
<code>Mac</code>对象。
</div> </td>
</tr>
<tr class="rowColor" id="i13">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/Mac.html#update-byte-">update</a></span>(byte input)</code>
<div class="block">
处理给定的字节。
</div> </td>
</tr>
<tr class="altColor" id="i14">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/Mac.html#update-byte:A-">update</a></span>(byte[] input)</code>
<div class="block">
处理给定的字节数组。
</div> </td>
</tr>
<tr class="rowColor" id="i15">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/Mac.html#update-byte:A-int-int-">update</a></span>(byte[] input, int offset, int len)</code>
<div class="block">
处理第一
<code>len</code>字节
<code>input</code> ,起始于
<code>offset</code>以下。
</div> </td>
</tr>
<tr class="altColor" id="i16">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/Mac.html#update-java.nio.ByteBuffer-">update</a></span>(<a href="../../java/nio/ByteBuffer.html" title="class in java.nio">ByteBuffer</a> input)</code>
<div class="block">
处理
<code>input.remaining()</code>字节的ByteBuffer
<code>input</code> ,从
<code>input.position()</code>开始。
</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#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="Mac-javax.crypto.MacSpi-java.security.Provider-java.lang.String-">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>Mac</h4> <pre>protected Mac(<a href="../../javax/crypto/MacSpi.html" title="class in javax.crypto">MacSpi</a> macSpi,
<a href="../../java/security/Provider.html" title="class in java.security">Provider</a> provider,
<a href="../../java/lang/String.html" title="class in java.lang">String</a> algorithm)</pre>
<div class="block">
创建MAC对象。
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>macSpi</code> - 代表
</dd>
<dd>
<code>provider</code> - 提供商
</dd>
<dd>
<code>algorithm</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">
<span>返回此<code>Mac</code>对象的算法名称。</span>
<p> <span>这是在创建此<code>Mac</code>对象的<code>getInstance</code>调用之一中指定的<code>getInstance</code></span> </p>
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
这个
<code>Mac</code>对象的算法名称。
</dd>
</dl> </li>
</ul> <a name="getInstance-java.lang.String-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getInstance</h4> <pre>public static final <a href="../../javax/crypto/Mac.html" title="class in javax.crypto">Mac</a> getInstance(<a href="../../java/lang/String.html" title="class in java.lang">String</a> algorithm)
throws <a href="../../java/security/NoSuchAlgorithmException.html" title="class in java.security">NoSuchAlgorithmException</a></pre>
<div class="block">
<span>返回实现指定MAC算法的<code>Mac</code>对象。</span>
<p> <span>此方法遍历已注册的安全提供程序列表,从最优选的提供程序开始。</span> <span>返回从支持指定算法的第一个提供者封装MacSpi实现的新Mac对象。</span> </p>
<p> <span>请注意,可以通过<a href="../../java/security/Security.html#getProviders--"><code>Security.getProviders()</code></a>方法检索已注册提供商的列表。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<span><code>algorithm</code> - 请求的MAC算法的标准名称。</span>
<span>有关标准算法名称的信息,请参阅<a href="../../../technotes/guides/security/StandardNames.html#Mac">Java Cryptography Architecture Standard Algorithm Name Documentation</a>中的Mac部分。</span>
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
新的
<code>Mac</code>对象。
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/security/NoSuchAlgorithmException.html" title="class in java.security">NoSuchAlgorithmException</a></code> - 如果没有提供程序支持指定算法的MacSpi实现。
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<span><a href="../../java/security/Provider.html" title="java.security中的类"><code>Provider</code></a></span>
</dd>
</dl> </li>
</ul> <a name="getInstance-java.lang.String-java.lang.String-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getInstance</h4> <pre>public static final <a href="../../javax/crypto/Mac.html" title="class in javax.crypto">Mac</a> getInstance(<a href="../../java/lang/String.html" title="class in java.lang">String</a> algorithm,
<a href="../../java/lang/String.html" title="class in java.lang">String</a> provider)
throws <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></pre>
<div class="block">
<span>返回实现指定的MAC算法的<code>Mac</code>对象。</span>
<p> <span>返回从指定的提供程序封装MacSpi实现的新Mac对象。</span> <span>指定的提供者必须在安全提供程序列表中注册。</span> </p>
<p> <span>请注意,注册提供商的列表可以通过<a href="../../java/security/Security.html#getProviders--"><code>Security.getProviders()</code></a>方法<a href="../../java/security/Security.html#getProviders--">检索</a></span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<span><code>algorithm</code> - 请求的MAC算法的标准名称。</span>
<span>有关标准算法名称的信息,请参阅<a href="../../../technotes/guides/security/StandardNames.html#Mac">Java Cryptography Architecture Standard Algorithm Name Documentation</a>中的Mac部分。</span>
</dd>
<dd>
<code>provider</code> - 提供者的名称。
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
新的
<code>Mac</code>对象。
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/security/NoSuchAlgorithmException.html" title="class in java.security">NoSuchAlgorithmException</a></code> - 如果指定算法的MacSpi实现不能从指定的提供者获得。
</dd>
<dd>
<code><a href="../../java/security/NoSuchProviderException.html" title="class in java.security">NoSuchProviderException</a></code> - 如果指定的提供程序未在安全提供程序列表中注册。
</dd>
<dd>
<code><a href="../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></code> - 如果
<code>provider</code>为空或为空。
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<span><a href="../../java/security/Provider.html" title="java.security中的类"><code>Provider</code></a></span>
</dd>
</dl> </li>
</ul> <a name="getInstance-java.lang.String-java.security.Provider-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getInstance</h4> <pre>public static final <a href="../../javax/crypto/Mac.html" title="class in javax.crypto">Mac</a> getInstance(<a href="../../java/lang/String.html" title="class in java.lang">String</a> algorithm,
<a href="../../java/security/Provider.html" title="class in java.security">Provider</a> provider)
throws <a href="../../java/security/NoSuchAlgorithmException.html" title="class in java.security">NoSuchAlgorithmException</a></pre>
<div class="block">
<span>返回实现指定MAC算法的<code>Mac</code>对象。</span>
<p> <span>返回从指定的Provider对象封装MacSpi实现的新Mac对象。</span> <span>请注意指定的Provider对象不必在提供者列表中注册。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<span><code>algorithm</code> - 请求的MAC算法的标准名称。</span>
<span>有关标准算法名称的信息,请参阅<a href="../../../technotes/guides/security/StandardNames.html#Mac">Java Cryptography Architecture Standard Algorithm Name Documentation</a>中的Mac部分。</span>
</dd>
<dd>
<code>provider</code> - 提供商。
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
新的
<code>Mac</code>对象。
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/security/NoSuchAlgorithmException.html" title="class in java.security">NoSuchAlgorithmException</a></code> - 如果指定的算法的MacSpi实现从指定的Provider对象不可用。
</dd>
<dd>
<code><a href="../../java/lang/IllegalArgumentException.html" title="class in java.lang">IllegalArgumentException</a></code> - 如果
<code>provider</code>为空。
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<span><a href="../../java/security/Provider.html" title="java.security中的类"><code>Provider</code></a></span>
</dd>
</dl> </li>
</ul> <a name="getProvider--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getProvider</h4> <pre>public final <a href="../../java/security/Provider.html" title="class in java.security">Provider</a> getProvider()</pre>
<div class="block">
返回此
<code>Mac</code>对象的提供程序。
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
这个
<code>Mac</code>对象的提供者。
</dd>
</dl> </li>
</ul> <a name="getMacLength--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>getMacLength</h4> <pre>public final int getMacLength()</pre>
<div class="block">
以字节为单位返回MAC的长度。
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
MAC长度以字节为单位
</dd>
</dl> </li>
</ul> <a name="init-java.security.Key-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>init</h4> <pre>public final void init(<a href="../../java/security/Key.html" title="interface in java.security">Key</a> key)
throws <a href="../../java/security/InvalidKeyException.html" title="class in java.security">InvalidKeyException</a></pre>
<div class="block">
使用给定的键初始化此
<code>Mac</code>对象。
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>key</code> - 关键。
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/security/InvalidKeyException.html" title="class in java.security">InvalidKeyException</a></code> - 如果给定的键不适合初始化此MAC。
</dd>
</dl> </li>
</ul> <a name="init-java.security.Key-java.security.spec.AlgorithmParameterSpec-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>init</h4> <pre>public final void init(<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)
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">
使用给定的键和算法参数初始化此
<code>Mac</code>对象。
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>key</code> - 关键。
</dd>
<dd>
<code>params</code> - 算法参数。
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/security/InvalidKeyException.html" title="class in java.security">InvalidKeyException</a></code> - 如果给定的键不适合初始化此MAC。
</dd>
<dd>
<code><a href="../../java/security/InvalidAlgorithmParameterException.html" title="class in java.security">InvalidAlgorithmParameterException</a></code> - 如果给定的算法参数不适合此MAC。
</dd>
</dl> </li>
</ul> <a name="update-byte-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>update</h4> <pre>public final void update(byte input)
throws <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>
<code>input</code> - 要处理的输入字节。
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/lang/IllegalStateException.html" title="class in java.lang">IllegalStateException</a></code> - 如果此
<code>Mac</code>尚未初始化。
</dd>
</dl> </li>
</ul> <a name="update-byte:A-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>update</h4> <pre>public final void update(byte[] input)
throws <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>
<code>input</code> - 要处理的字节数组。
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/lang/IllegalStateException.html" title="class in java.lang">IllegalStateException</a></code> - 如果此
<code>Mac</code>尚未初始化。
</dd>
</dl> </li>
</ul> <a name="update-byte:A-int-int-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>update</h4> <pre>public final void update(byte[] input,
int offset,
int len)
throws <a href="../../java/lang/IllegalStateException.html" title="class in java.lang">IllegalStateException</a></pre>
<div class="block">
处理第一
<code>len</code>字节
<code>input</code> ,起始于
<code>offset</code>以下。
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>input</code> - 输入缓冲区。
</dd>
<dd>
<code>offset</code> -
<code>input</code>中的输入开始的偏移量。
</dd>
<dd>
<code>len</code> - 要处理的字节数。
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/lang/IllegalStateException.html" title="class in java.lang">IllegalStateException</a></code> - 如果此
<code>Mac</code>尚未初始化。
</dd>
</dl> </li>
</ul> <a name="update-java.nio.ByteBuffer-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>update</h4> <pre>public final void update(<a href="../../java/nio/ByteBuffer.html" title="class in java.nio">ByteBuffer</a> input)</pre>
<div class="block">
<span>处理<code>input.remaining()</code>字节的ByteBuffer <code>input</code> ,从<code>input.position()</code>开始。</span>
<span>返回时,缓冲区的位置将等于其限制;</span>
<span>其限制将不会改变。</span>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>input</code> - ByteBuffer
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/lang/IllegalStateException.html" title="class in java.lang">IllegalStateException</a></code> - 如果
<code>Mac</code>尚未初始化。
</dd>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
1.5
</dd>
</dl> </li>
</ul> <a name="doFinal--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>doFinal</h4> <pre>public final byte[] doFinal()
throws <a href="../../java/lang/IllegalStateException.html" title="class in java.lang">IllegalStateException</a></pre>
<div class="block">
<span>完成MAC操作。</span>
<p> <span>调用此方法会将此<code>Mac</code>对象重置为先前通过调用<code>init(Key)</code><code>init(Key, AlgorithmParameterSpec)</code></span> <span>也就是说,如果需要,通过对<code>update</code><code>doFinal</code>新呼叫对象被重置并可用于从相同的密钥生成另一个MAC。</span> <span>(为了使用不同的键来重用此<code>Mac</code>对象,必须通过调用<code>init(Key)</code><code>init(Key, AlgorithmParameterSpec)</code></span> </p>
</div>
<dl>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
MAC结果。
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/lang/IllegalStateException.html" title="class in java.lang">IllegalStateException</a></code> - 如果此
<code>Mac</code>尚未初始化。
</dd>
</dl> </li>
</ul> <a name="doFinal-byte:A-int-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>doFinal</h4> <pre>public final void doFinal(byte[] output,
int outOffset)
throws <a href="../../javax/crypto/ShortBufferException.html" title="class in javax.crypto">ShortBufferException</a>,
<a href="../../java/lang/IllegalStateException.html" title="class in java.lang">IllegalStateException</a></pre>
<div class="block">
<span>完成MAC操作。</span>
<p> <span>调用此方法将此<code>Mac</code>对象重置为先前通过调用<code>init(Key)</code><code>init(Key, AlgorithmParameterSpec)</code></span> <span>也就是说,对象被重置并且可用于通过对<code>update</code><code>doFinal</code>新呼叫从相同的密钥生成另一个MAC。</span> <span>(为了使用不同的键重用此<code>Mac</code>对象,必须通过调用<code>init(Key)</code><code>init(Key, AlgorithmParameterSpec)</code></span> </p>
<p> <span>MAC结果存储在<code>output</code> ,从<code>outOffset</code>开始。</span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>output</code> - 存储MAC结果的缓冲区
</dd>
<dd>
<code>outOffset</code> - 存储MAC的
<code>output</code>中的偏移量
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../javax/crypto/ShortBufferException.html" title="class in javax.crypto">ShortBufferException</a></code> - 如果给定的输出缓冲区太小,不能容纳结果
</dd>
<dd>
<code><a href="../../java/lang/IllegalStateException.html" title="class in java.lang">IllegalStateException</a></code> - 如果此
<code>Mac</code>尚未初始化。
</dd>
</dl> </li>
</ul> <a name="doFinal-byte:A-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>doFinal</h4> <pre>public final byte[] doFinal(byte[] input)
throws <a href="../../java/lang/IllegalStateException.html" title="class in java.lang">IllegalStateException</a></pre>
<div class="block">
<span>处理给定的字节数组并完成MAC操作。</span>
<p> <span>调用此方法将此<code>Mac</code>对象重置为先前通过调用<code>init(Key)</code><code>init(Key, AlgorithmParameterSpec)</code></span> <span>也就是说,如果需要,通过对<code>update</code><code>doFinal</code>新呼叫对象被重置并可用于从相同的密钥生成另一个MAC。</span> <span>(为了使用不同的键来重用此<code>Mac</code>对象,必须通过调用<code>init(Key)</code><code>init(Key, AlgorithmParameterSpec)</code></span> </p>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>input</code> - 以字节为单位的数据
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
MAC结果。
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/lang/IllegalStateException.html" title="class in java.lang">IllegalStateException</a></code> - 如果此
<code>Mac</code>尚未初始化。
</dd>
</dl> </li>
</ul> <a name="reset--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>reset</h4> <pre>public final void reset()</pre>
<div class="block">
<span>重设此<code>Mac</code>对象。</span>
<p> <span>调用此方法将此<code>Mac</code>对象重置为先前通过调用<code>init(Key)</code><code>init(Key, AlgorithmParameterSpec)</code></span> <span>也就是说,对象被重置并且可用于通过对<code>update</code><code>doFinal</code>新呼叫从相同的密钥生成另一MAC。</span> <span>(为了使用不同的键重用此<code>Mac</code>对象,必须通过调用<code>init(Key)</code><code>init(Key, AlgorithmParameterSpec)</code></span> </p>
</div> </li>
</ul> <a name="clone--">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>clone</h4> <pre>public final <a href="../../java/lang/Object.html" title="class in java.lang">Object</a> clone()
throws <a href="../../java/lang/CloneNotSupportedException.html" title="class in java.lang">CloneNotSupportedException</a></pre>
<div class="block">
如果提供程序实现是可克隆的,则返回克隆。
</div>
<dl>
<dt>
<span class="overrideSpecifyLabel">重写:</span>
</dt>
<dd>
<code><a href="../../java/lang/Object.html#clone--">clone</a></code>
<code><a href="../../java/lang/Object.html" title="class in java.lang">Object</a></code>
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
一个克隆,如果提供者实现是可克隆的。
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/lang/CloneNotSupportedException.html" title="class in java.lang">CloneNotSupportedException</a></code> - 如果在不支持
<code>Cloneable</code>的代理上调用此方法。
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<span><a href="../../java/lang/Cloneable.html" title="java.lang中的接口"><code>Cloneable</code></a></span>
</dd>
</dl> </li>
</ul> </li>
</ul> </li>
</ul>
</div>
</div>