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

560 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 CipherInputStream">Class CipherInputStream</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><a href="../../java/io/InputStream.html" title="class in java.io">java.io.InputStream</a></li>
<li>
<ul class="inheritance">
<li><a href="../../java/io/FilterInputStream.html" title="class in java.io">java.io.FilterInputStream</a></li>
<li>
<ul class="inheritance">
<li>javax.crypto.CipherInputStream</li>
</ul> </li>
</ul> </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/Closeable.html" title="java.io中的接口">Closeable</a> <a href="../../java/lang/AutoCloseable.html" title="java.lang中的接口">AutoCloseable</a></span>
</dd>
</dl>
<hr/> <br/> <pre>public class <span class="typeNameLabel">CipherInputStream</span>
extends <a href="../../java/io/FilterInputStream.html" title="class in java.io">FilterInputStream</a></pre>
<div class="block">
<span>CipherInputStream由InputStream和Cipher组成使得read方法返回从底层InputStream读入但是由Cipher额外处理的数据。</span>
<span>密码必须在被CipherInputStream使用之前完全初始化。</span>
<p> <span>例如如果将密码初始化为解密则CipherInputStream将在返回解密的数据之前尝试读取数据并将其解密。</span> </p>
<p> <span>该类严格遵守其祖先类java.io.FilterInputStream和java.io.InputStream的语义特别是失败语义。</span> <span>这个类只有在其祖先类中指定的方法,并覆盖它们全部。</span> <span>此外,此类捕获其祖先类不抛出的所有异常。</span> <span>特别地, <code>skip</code>方法跳过,并且<code>available</code>方法仅计数已由封装的密码处理的数据。</span> </p>
<p> <span>对于使用此类的程序员不要使用在此类中未定义或覆盖的方法例如后来添加到其中一个超类的新方法或构造函数因为这些方法的设计和实现不太可能考虑到对CipherInputStream的安全性影响。</span> </p>
</div>
<dl>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
1.4
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<span><a href="../../java/io/InputStream.html" title="java.io中的类"><code>InputStream</code></a> <a href="../../java/io/FilterInputStream.html" title="java.io中的类"><code>FilterInputStream</code></a> <a href="../../javax/crypto/Cipher.html" title="javax.crypto中的类"><code>Cipher</code></a> <a href="../../javax/crypto/CipherOutputStream.html" title="javax.crypto中的类"><code>CipherOutputStream</code></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>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.java.io.FilterInputStream">
<!-- --> </a> <h3>Fields inherited from class java.io.<a href="../../java/io/FilterInputStream.html" title="class in java.io">FilterInputStream</a></h3> <code><a href="../../java/io/FilterInputStream.html#in">in</a></code></li>
</ul> </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/CipherInputStream.html#CipherInputStream-java.io.InputStream-">CipherInputStream</a></span>(<a href="../../java/io/InputStream.html" title="class in java.io">InputStream</a> is)</code>
<div class="block">
从InputStream构造CipherInputStream而不指定密码。
</div> </td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code> </code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/CipherInputStream.html#CipherInputStream-java.io.InputStream-javax.crypto.Cipher-">CipherInputStream</a></span>(<a href="../../java/io/InputStream.html" title="class in java.io">InputStream</a> is, <a href="../../javax/crypto/Cipher.html" title="class in javax.crypto">Cipher</a> c)</code>
<div class="block">
从InputStream和Cipher构造一个CipherInputStream。
</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>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/CipherInputStream.html#available--">available</a></span>()</code>
<div class="block">
返回可以从该输入流读取而不阻塞的字节数。
</div> </td>
</tr>
<tr class="rowColor" id="i1">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/CipherInputStream.html#close--">close</a></span>()</code>
<div class="block">
关闭此输入流并释放与流相关联的任何系统资源。
</div> </td>
</tr>
<tr class="altColor" id="i2">
<td class="colFirst"><code>boolean</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/CipherInputStream.html#markSupported--">markSupported</a></span>()</code>
<div class="block">
测试这个输入流是否支持
<code>mark</code>
<code>reset</code>方法,而不是。
</div> </td>
</tr>
<tr class="rowColor" id="i3">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/CipherInputStream.html#read--">read</a></span>()</code>
<div class="block">
从该输入流读取下一个数据字节。
</div> </td>
</tr>
<tr class="altColor" id="i4">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/CipherInputStream.html#read-byte:A-">read</a></span>(byte[] b)</code>
<div class="block">
从该输入流读取最多
<code>b.length</code>个字节的数据到字节数组。
</div> </td>
</tr>
<tr class="rowColor" id="i5">
<td class="colFirst"><code>int</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/CipherInputStream.html#read-byte:A-int-int-">read</a></span>(byte[] b, int off, int len)</code>
<div class="block">
从该输入流读取高达
<code>len</code>字节的数据到字节数组。
</div> </td>
</tr>
<tr class="altColor" id="i6">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../javax/crypto/CipherInputStream.html#skip-long-">skip</a></span>(long n)</code>
<div class="block">
跳过
<code>n</code>字节的字节,可从该输入流中读取而不阻塞。
</div> </td>
</tr>
</tbody>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.io.FilterInputStream">
<!-- --> </a> <h3>Methods inherited from class java.io.<a href="../../java/io/FilterInputStream.html" title="class in java.io">FilterInputStream</a></h3> <code><a href="../../java/io/FilterInputStream.html#mark-int-">mark</a>, <a href="../../java/io/FilterInputStream.html#reset--">reset</a></code></li>
</ul>
<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="CipherInputStream-java.io.InputStream-javax.crypto.Cipher-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>CipherInputStream</h4> <pre>public CipherInputStream(<a href="../../java/io/InputStream.html" title="class in java.io">InputStream</a> is,
<a href="../../javax/crypto/Cipher.html" title="class in javax.crypto">Cipher</a> c)</pre>
<div class="block">
<span>从InputStream和Cipher构造一个CipherInputStream。</span>
<br/>
<span>注意如果指定的输入流或密码为空则在使用NullPointerException时可能会稍后抛出。</span>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>is</code> - 要处理的输入流
</dd>
<dd>
<code>c</code> - 一个初始化的Cipher对象
</dd>
</dl> </li>
</ul> <a name="CipherInputStream-java.io.InputStream-">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>CipherInputStream</h4> <pre>protected CipherInputStream(<a href="../../java/io/InputStream.html" title="class in java.io">InputStream</a> is)</pre>
<div class="block">
<span>从InputStream构造CipherInputStream而不指定密码。</span>
<span>这具有使用NullCipher构造CipherInputStream的效果。</span>
<br/>
<span>注意如果指定的输入流为空则在使用NullPointerException时可能会稍后抛出。</span>
</div>
<dl>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>is</code> - 待处理的输入流
</dd>
</dl> </li>
</ul> </li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- --> </a> <h3>方法详细信息</h3> <a name="read--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>read</h4> <pre>public int read()
throws <a href="../../java/io/IOException.html" title="class in java.io">IOException</a></pre>
<div class="block">
<span>从该输入流读取下一个数据字节。</span>
<span>值字节作为<code>int</code>返回,范围为<code>0</code><code>255</code></span>
<span>如果没有字节可用,因为流已经到达,则返回值<code>-1</code></span>
<span>该方法阻塞直到输入数据可用,检测到流的结尾,或抛出异常。</span>
<p></p>
</div>
<dl>
<dt>
<span class="overrideSpecifyLabel">重写:</span>
</dt>
<dd>
<code><a href="../../java/io/FilterInputStream.html#read--">read</a></code>
<code><a href="../../java/io/FilterInputStream.html" title="class in java.io">FilterInputStream</a></code>
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
数据的下一个字节,如果达到流的末尾,
<code>-1</code>
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/io/IOException.html" title="class in java.io">IOException</a></code> - 如果发生I / O错误。
</dd>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
JCE1.2
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../java/io/FilterInputStream.html#in"><code>FilterInputStream.in</code></a>
</dd>
</dl> </li>
</ul> <a name="read-byte:A-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>read</h4> <pre>public int read(byte[] b)
throws <a href="../../java/io/IOException.html" title="class in java.io">IOException</a></pre>
<div class="block">
<span>从该输入流读取高达<code>b.length</code>字节的数据到字节数组。</span>
<p> <span><code>read</code>的方法<code>InputStream</code>调用<code>read</code>的三个参数与参数方法<code>b</code> <code>0</code><code>b.length</code></span> </p>
</div>
<dl>
<dt>
<span class="overrideSpecifyLabel">重写:</span>
</dt>
<dd>
<code><a href="../../java/io/FilterInputStream.html#read-byte:A-">read</a></code>
<code><a href="../../java/io/FilterInputStream.html" title="class in java.io">FilterInputStream</a></code>
</dd>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>b</code> - 读取数据的缓冲区。
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
读入缓冲区的总字节数,或
<code>-1</code>是没有更多的数据,因为已经到达流的结尾。
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/io/IOException.html" title="class in java.io">IOException</a></code> - 如果发生I / O错误。
</dd>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
JCE1.2
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../java/io/InputStream.html#read-byte:A-int-int-"><code>InputStream.read(byte[], int, int)</code></a>
</dd>
</dl> </li>
</ul> <a name="read-byte:A-int-int-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>read</h4> <pre>public int read(byte[] b,
int off,
int len)
throws <a href="../../java/io/IOException.html" title="class in java.io">IOException</a></pre>
<div class="block">
<span>从该输入流读取高达<code>len</code>字节的数据到字节数组。</span>
<span>此方法将阻塞,直到某些输入可用。</span>
<span>如果第一个参数是<code>null,</code>最多可以读取并丢弃<code>len</code>个字节。</span>
</div>
<dl>
<dt>
<span class="overrideSpecifyLabel">重写:</span>
</dt>
<dd>
<code><a href="../../java/io/FilterInputStream.html#read-byte:A-int-int-">read</a></code>
<code><a href="../../java/io/FilterInputStream.html" title="class in java.io">FilterInputStream</a></code>
</dd>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>b</code> - 读取数据的缓冲区。
</dd>
<dd>
<code>off</code> - 目标数组
<code>buf</code>的起始偏移量
</dd>
<dd>
<code>len</code> - 读取的最大字节数。
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
读取到缓冲区的总字节数,如果没有更多的数据,因为已经到达流的末尾,则是
<code>-1</code>
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/io/IOException.html" title="class in java.io">IOException</a></code> - 如果发生I / O错误。
</dd>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
JCE1.2
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../java/io/InputStream.html#read--"><code>InputStream.read()</code></a>
</dd>
</dl> </li>
</ul> <a name="skip-long-">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>skip</h4> <pre>public long skip(long n)
throws <a href="../../java/io/IOException.html" title="class in java.io">IOException</a></pre>
<div class="block">
<span>跳过<code>n</code>字节的字节,可从该输入流中读取而不阻塞。</span>
<p> <span>可能会跳过比请求的字节少的字节。</span> <span>跳过的实际字节数等于<code>n</code>或调用<a href="../../javax/crypto/CipherInputStream.html#available--"><code>available</code></a>的结果,以<a href="../../javax/crypto/CipherInputStream.html#available--">较小</a>者为准。</span> <span>如果<code>n</code>小于0则不跳过任何字节。</span> </p>
<p> <span>返回实际跳过的字节数。</span> </p>
</div>
<dl>
<dt>
<span class="overrideSpecifyLabel">重写:</span>
</dt>
<dd>
<code><a href="../../java/io/FilterInputStream.html#skip-long-">skip</a></code>
<code><a href="../../java/io/FilterInputStream.html" title="class in java.io">FilterInputStream</a></code>
</dd>
<dt>
<span class="paramLabel">参数</span>
</dt>
<dd>
<code>n</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> - 如果发生I / O错误。
</dd>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
JCE1.2
</dd>
</dl> </li>
</ul> <a name="available--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>available</h4> <pre>public int available()
throws <a href="../../java/io/IOException.html" title="class in java.io">IOException</a></pre>
<div class="block">
<span>返回可以从该输入流读取而不阻塞的字节数。</span>
<span><code>available</code>方法<code>InputStream</code>返回<code>0</code></span>
<span>这个方法<b>应该</b>被子类覆盖。</span>
</div>
<dl>
<dt>
<span class="overrideSpecifyLabel">重写:</span>
</dt>
<dd>
<code><a href="../../java/io/FilterInputStream.html#available--">available</a></code>
<code><a href="../../java/io/FilterInputStream.html" title="class in java.io">FilterInputStream</a></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> - 如果发生I / O错误。
</dd>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
JCE1.2
</dd>
</dl> </li>
</ul> <a name="close--">
<!-- --> </a>
<ul class="blockList">
<li class="blockList"> <h4>close</h4> <pre>public void close()
throws <a href="../../java/io/IOException.html" title="class in java.io">IOException</a></pre>
<div class="block">
<span>关闭此输入流并释放与流相关联的任何系统资源。</span>
<p> <span><code>close</code>的方法<code>CipherInputStream</code>调用<code>close</code>其底层输入流的方法。</span> </p>
</div>
<dl>
<dt>
<span class="overrideSpecifyLabel">Specified by:</span>
</dt>
<dd>
<code><a href="../../java/io/Closeable.html#close--">close</a></code>在界面
<code><a href="../../java/io/Closeable.html" title="interface in java.io">Closeable</a></code>
</dd>
<dt>
<span class="overrideSpecifyLabel">Specified by:</span>
</dt>
<dd>
<code><a href="../../java/lang/AutoCloseable.html#close--">close</a></code>在界面
<code><a href="../../java/lang/AutoCloseable.html" title="interface in java.lang">AutoCloseable</a></code>
</dd>
<dt>
<span class="overrideSpecifyLabel">重写:</span>
</dt>
<dd>
<code><a href="../../java/io/FilterInputStream.html#close--">close</a></code>在类别
<code><a href="../../java/io/FilterInputStream.html" title="class in java.io">FilterInputStream</a></code>
</dd>
<dt>
<span class="throwsLabel">异常</span>
</dt>
<dd>
<code><a href="../../java/io/IOException.html" title="class in java.io">IOException</a></code> - 如果发生I / O错误。
</dd>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
JCE1.2
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../java/io/FilterInputStream.html#in"><code>FilterInputStream.in</code></a>
</dd>
</dl> </li>
</ul> <a name="markSupported--">
<!-- --> </a>
<ul class="blockListLast">
<li class="blockList"> <h4>markSupported</h4> <pre>public boolean markSupported()</pre>
<div class="block">
测试这个输入流是否支持
<code>mark</code>
<code>reset</code>方法,而不是。
</div>
<dl>
<dt>
<span class="overrideSpecifyLabel">重写:</span>
</dt>
<dd>
<code><a href="../../java/io/FilterInputStream.html#markSupported--">markSupported</a></code>在类别
<code><a href="../../java/io/FilterInputStream.html" title="class in java.io">FilterInputStream</a></code>
</dd>
<dt>
<span class="returnLabel">结果</span>
</dt>
<dd>
<code>false</code> ,因为这个类不支持
<code>mark</code>
<code>reset</code>方法。
</dd>
<dt>
<span class="simpleTagLabel">从以下版本开始:</span>
</dt>
<dd>
JCE1.2
</dd>
<dt>
<span class="seeLabel">另请参见:</span>
</dt>
<dd>
<a href="../../java/io/InputStream.html#mark-int-"><code>InputStream.mark(int)</code></a>
<a href="../../java/io/InputStream.html#reset--"><code>InputStream.reset()</code></a>
</dd>
</dl> </li>
</ul> </li>
</ul> </li>
</ul>
</div>
</div>