java.security

接口
异常
java.lang.Object
  继承者 java.io.InputStream
      继承者 java.io.FilterInputStream
          继承者 java.security.DigestInputStream
所有已实现的接口:
Closeable

public class DigestInputStream
     
extends FilterInputStream

使用通过流的位更新关联消息摘要的透明流。

要完成消息摘要计算,先要调用此摘要输入流的一个 read 方法,之后在关联的消息摘要上调用一个 digest 方法。

开启或关闭此流都是可能的(请参见 on)。开启时,调用 read 方法之一将导致消息摘要的更新。但是关闭时,不更新消息摘要。流在默认情况下是开启的。

注意,摘要对象只能计算一个摘要(参见 MessageDigest),因此,为了计算中间摘要,调用者应该保留到摘要对象的句柄并为要计算的每一个摘要复制该对象,不改动原始摘要。

另请参见:
MessageDigest, DigestOutputStream

字段摘要
protected  MessageDigest digest
          与此流关联的消息摘要。
 
从类 java.io.FilterInputStream 继承的字段
in
 
构造方法摘要
DigestInputStream(InputStream stream, MessageDigest digest)
          使用指定的输入流和消息摘要创建一个摘要输入流。
 
方法摘要
 MessageDigest getMessageDigest()
          返回与此流关联的消息摘要。
 void on(boolean on)
          开启或关闭摘要功能。
 int read()
          读取字节并更新消息摘要(如果开启了摘要功能)。
 int read(byte[] b, int off, int len)
          读入 byte 数组并更新消息摘要(如果开启了摘要功能)。
 void setMessageDigest(MessageDigest digest)
          将指定的消息摘要与此流相关联。
 String toString()
          打印此摘要输入流及其关联的消息摘要对象的字符串表示形式。
 
从类 java.io.FilterInputStream 继承的方法
available, close, mark, markSupported, read, reset, skip
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

字段详细信息

digest

protected MessageDigest digest
与此流关联的消息摘要。

构造方法详细信息

DigestInputStream

public DigestInputStream(InputStream stream,
                         MessageDigest digest)
使用指定的输入流和消息摘要创建一个摘要输入流。

参数:
stream - 输入流。
digest - 要与此流关联的消息摘要。
方法详细信息

getMessageDigest

public MessageDigest getMessageDigest()
返回与此流关联的消息摘要。

返回:
与此流关联的消息摘要。
另请参见:
setMessageDigest(java.security.MessageDigest)

setMessageDigest

public void setMessageDigest(MessageDigest digest)
将指定的消息摘要与此流相关联。

参数:
digest - 要与此流关联的消息摘要。
另请参见:
getMessageDigest()

read

public int read()
         throws IOException
读取字节并更新消息摘要(如果开启了摘要功能)。即此方法从输入流读取字节,在实际读取字节前一直为阻塞状态。如果开启摘要功能(参见 on),则此方法将在与此流关联的消息摘要上调用 update,将读取的字节传递给该方法。

覆盖:
FilterInputStream 中的 read
返回:
读取的字节。
抛出:
IOException - 如果发生 I/O 错误。
另请参见:
MessageDigest.update(byte)

read

public int read(byte[] b,
                int off,
                int len)
         throws IOException
读入 byte 数组并更新消息摘要(如果开启了摘要功能)。即此方法从输入流将至多 len 个字节读入数组 b,从偏移量 off 开始。此方法在实际读取数据前一直阻塞。如果开启摘要功能(参见 on),则此方法将在与此流关联的消息摘要上调用 update,将数据传递给该方法。

覆盖:
FilterInputStream 中的 read
参数:
b - 从中读取数据的数组。
off - b 中的偏移量,应将数据从此处开始放入数组。
len - 从输入流读入 b 的最大字节数,从偏移量 off 开始。
返回:
读取的实际字节数。如果在读取 len 个字节前到达了流的末尾,则其小于 len。如果因为进行调用时已经到达了流的末尾而没有读取任何字节,则返回 -1。
抛出:
IOException - 如果发生 I/O 错误。
另请参见:
MessageDigest.update(byte[], int, int)

on

public void on(boolean on)
开启或关闭摘要功能。默认为开启。开启时,调用 read 方法之一将导致消息摘要的更新。但是关闭时,不更新消息摘要。

参数:
on - 为 true 表示开启摘要功能,为 false 表示关闭。

toString

public String toString()
打印此摘要输入流及其关联的消息摘要对象的字符串表示形式。

覆盖:
Object 中的 toString
返回:
该对象的字符串表示形式。