javax.crypto

接口
异常
java.lang.Object
  继承者 java.io.OutputStream
      继承者 java.io.FilterOutputStream
          继承者 javax.crypto.CipherOutputStream
所有已实现的接口:
Closeable, Flushable

public class CipherOutputStream
     
extends FilterOutputStream

CipherOutputStream 由一个 OutputStream 和一个 Cipher 组成,这样 write() 方法才能在将数据写出到底层 OutputStream 之前先对该数据进行处理。在由 CipherOutputStream 使用之前,密码必须充分初始化。

例如,假设密码初始化为加密,CipherOutputStream 将在写出该加密数据之前,尝试加密数据。

此类严格遵守此语义,尤其是其祖先类 java.io.OutputStream 和 java.io.FilterOutputStream 的失败语义。此类具有在其祖先类中指定的所有方法,并且对所有的这些方法进行了重写。除此之外,此类还对其祖先类未抛出的所有异常进行捕获。

对程序员非常重要的一点是,不要使用未在此类中定义或重写的方法(例如,后来加入到某个超类的新方法或构造方法),因为那些方法的设计和实现有可能未考虑到对 CipherOutputStream 的安全影响。

从以下版本开始:
1.4
另请参见:
OutputStream, FilterOutputStream, Cipher, CipherInputStream

字段摘要
 
从类 java.io.FilterOutputStream 继承的字段
out
 
构造方法摘要
protected CipherOutputStream(OutputStream os)
          从 OutputStream 构造 CipherOutputStream,不指定 Cipher。
  CipherOutputStream(OutputStream os, Cipher c)
          从 OutputStream 和 Cipher 构造 CipherOutputStream。
 
方法摘要
 void close()
          关闭此输出流并释放任何与此流关联的系统资源。
 void flush()
          强制写出已由封装的密码对象处理的任何缓存输出字节来刷新此输出流。
 void write(byte[] b)
          从指定的字节数组中将 b.length 个字节写入此输出流。
 void write(byte[] b, int off, int len)
          将指定的字节数组中从 off 偏移量开始的 len 个字节写入此输出流。
 void write(int b)
          将指定的字节写入此输出流。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

CipherOutputStream

public CipherOutputStream(OutputStream os,
                          Cipher c)
从 OutputStream 和 Cipher 构造 CipherOutputStream。
注:如果指定的输出流或密码为 null,则在后续使用输出流或密码时可能抛出 NullPointerException 异常。

参数:
os - OutputStream 对象
c - 已初始化的 Cipher 对象

CipherOutputStream

protected CipherOutputStream(OutputStream os)
从 OutputStream 构造 CipherOutputStream,不指定 Cipher。这与使用 NullCipher 构造 CipherOutputStream 具有相同的效果。
注:如果指定的输出流为 null,则在后续使用输出流时可能抛出 NullPointerException 异常。

参数:
os - OutputStream 对象
方法详细信息

write

public void write(int b)
           throws IOException
将指定的字节写入此输出流。

覆盖:
FilterOutputStream 中的 write
参数:
b - byte
抛出:
IOException - 如果发生 I/O 错误。
从以下版本开始:
JCE1.2

write

public void write(byte[] b)
           throws IOException
从指定的字节数组中将 b.length 个字节写入此输出流。

CipherOutputStreamwrite 方法调用带三个参数的 write 方法,三个参数为 b0b.length

覆盖:
FilterOutputStream 中的 write
参数:
b - 数据。
抛出:
NullPointerException - 如果 b 为 null。
IOException - 如果发生 I/O 错误。
从以下版本开始:
JCE1.2
另请参见:
write(byte[], int, int)

write

public void write(byte[] b,
                  int off,
                  int len)
           throws IOException
将指定的字节数组中从 off 偏移量开始的 len 个字节写入此输出流。

覆盖:
FilterOutputStream 中的 write
参数:
b - 数据。
off - 数据中的初始偏移量。
len - 要写入的字节数。
抛出:
IOException - 如果发生 I/O 错误。
从以下版本开始:
JCE1.2
另请参见:
FilterOutputStream.write(int)

flush

public void flush()
           throws IOException
强制写出已由封装的密码对象处理的任何缓存输出字节来刷新此输出流。

由封装的密码缓存并等待由其处理的任何字节将不被写出。例如,假设封装的密码为块密码,并且使用某个 write 方法写入的总字节数小于密码的块大小,将不写出任何字节。

指定者:
接口 Flushable 中的 flush
覆盖:
FilterOutputStream 中的 flush
抛出:
IOException - 如果发生 I/O 错误。
从以下版本开始:
JCE1.2
另请参见:
FilterOutputStream.out

close

public void close()
           throws IOException
关闭此输出流并释放任何与此流关联的系统资源。

此方法调用封装密码对象的 doFinal 方法,它使得由该封装密码缓存的任何字节都被处理。通过调用此输出流的 flush 方法写出结果。

此方法将封装密码对象重置为其初始状态并调用底层输出流的 close 方法。

指定者:
接口 Closeable 中的 close
覆盖:
FilterOutputStream 中的 close
抛出:
IOException - 如果发生 I/O 错误。
从以下版本开始:
JCE1.2
另请参见:
FilterOutputStream.flush(), FilterOutputStream.out