- java.lang.Object
-  
      - java.io.OutputStream
-  
        - java.io.FilterOutputStream
-  
          - javax.crypto.CipherOutputStream
 
 
 
-  
       - 实现的所有接口
-  
         Closeable,Flushable,AutoCloseable
 
 public class CipherOutputStream extends FilterOutputStream CipherOutputStream由OutputStream和Cipher组成,因此write()方法在将数据写入底层OutputStream之前首先处理数据。 在由CipherOutputStream使用之前,必须完全初始化密码。例如,如果密码被初始化以进行加密,则CipherOutputStream将在写出加密数据之前尝试加密数据。 该类严格遵守其祖先类java.io.OutputStream和java.io.FilterOutputStream的语义,尤其是失败语义。 该类具有其祖先类中指定的那些方法,并将它们全部覆盖。 此外,此类捕获其祖先类未抛出的所有异常。 特别是,此类捕获BadPaddingException以及解密期间由于失败的完整性检查引发的其他异常。 不会重新抛出这些异常,因此不会通知客户端完整性检查失败。 由于此行为,如果应用程序在身份验证失败时需要显式通知,则此类可能不适合在经过身份验证的操作模式(例如GCM)中使用解密。 这样的应用程序可以直接使用Cipher API作为使用此类的替代方法。 对于使用此类的程序员来说,不要使用未在此类中定义或覆盖的方法(例如稍后添加到其中一个超类中的新方法或构造函数),这一点至关重要,因为这些方法的设计和实现不太可能考虑CipherOutputStream的安全影响。 - 从以下版本开始:
- 1.4
- 另请参见:
-  
         OutputStream,FilterOutputStream,Cipher,CipherInputStream
 
-  
        
       -  
             字段汇总-  
               声明的属性在类 java.io.FilterOutputStreamout
 
-  
               
 -  
             构造方法摘要构造方法 变量 构造器 描述 protectedCipherOutputStream(OutputStream os)从OutputStream构造CipherOutputStream而不指定Cipher。CipherOutputStream(OutputStream os, Cipher c)从OutputStream和Cipher构造CipherOutputStream。
 -  
             方法摘要所有方法 实例方法 具体的方法 变量和类型 方法 描述 voidclose()关闭此输出流并释放与此流关联的所有系统资源。voidflush()通过强制写出已由封装的密码对象处理的任何缓冲的输出字节来刷新此输出流。voidwrite(byte[] b)将b.length个字节从指定的字节数组写入此输出流。voidwrite(byte[] b, int off, int len)将从偏移量为off的指定字节数组中的len个字节写入此输出流。voidwrite(int b)将指定的字节写入此输出流。-  
               声明方法的类 java.io.OutputStreamnullOutputStream
 
-  
               
 
-  
             
-  
        
       -  
             构造方法详细信息-  CipherOutputStreampublic CipherOutputStream(OutputStream os, Cipher c) 从OutputStream和Cipher构造CipherOutputStream。
 注意:如果指定的输出流或密码为null,则在使用它们时可能会抛出NullPointerException。- 参数
-  
              os- OutputStream对象
-  
              c- 初始化的Cipher对象
 
 -  CipherOutputStreamprotected CipherOutputStream(OutputStream os) 从OutputStream构造CipherOutputStream而不指定Cipher。 这具有使用NullCipher构造CipherOutputStream的效果。
 注意:如果指定的输出流为null,则在使用它时可能会抛出NullPointerException。- 参数
-  
              os- OutputStream对象
 
 
-  
 -  
             方法详细信息-  writepublic void write(int b) throws IOException将指定的字节写入此输出流。- 重写:
-  
              write在类FilterOutputStream
- 参数
-  
              b-byte。
- 异常
-  
              IOException- 如果发生I / O错误。
 
 -  writepublic void write(byte[] b) throws IOException将b.length字节从指定的字节数组写入此输出流。该 write的方法CipherOutputStream调用write的三个参数与三个参数的方法b,0和b.length。- 重写:
-  
              write在FilterOutputStream类
- 参数
-  
              b- 数据。
- 异常
-  
              NullPointerException- 如果b为空。
-  
              IOException- 如果发生I / O错误。
- 另请参见:
-  
              write(byte[], int, int)
 
 -  writepublic void write(byte[] b, int off, int len) throws IOException将从偏移量为off的指定字节数组中的len个字节写入此输出流。- 重写:
-  
              write在类FilterOutputStream
- 参数
-  
              b- 数据。
-  
              off- 数据中的起始偏移量。
-  
              len- 要写入的字节数。
- 异常
-  
              IOException- 如果发生I / O错误。
- 另请参见:
-  
              FilterOutputStream.write(int)
 
 -  flushpublic void flush() throws IOException通过强制写出已由封装的密码对象处理的任何缓冲的输出字节来刷新此输出流。由封装的密码缓冲并等待由它处理的任何字节都不会被写出。 例如,如果封装的密码是块密码,并且使用 write方法之一写入的总字节数小于密码的块大小,则不会写出任何字节。- Specified by:
-  
              flush在界面Flushable
- 重写:
-  
              flushin classFilterOutputStream
- 异常
-  
              IOException- 如果发生I / O错误。
- 另请参见:
-  
              FilterOutputStream.out
 
 -  closepublic void close() throws IOException关闭此输出流并释放与此流关联的所有系统资源。此方法调用封装的密码对象的 doFinal方法,该方法将处理由封装的密码缓冲的任何字节。 通过调用此输出流的flush方法写出结果。此方法将封装的密码对象重置为其初始状态,并调用基础输出流的 close方法。- Specified by:
-  
              close在界面AutoCloseable
- Specified by:
-  
              close在界面Closeable
- 重写:
-  
              close在FilterOutputStream类
- 异常
-  
              IOException- 如果发生I / O错误。
- 另请参见:
-  
              FilterOutputStream.flush(),FilterOutputStream.out
 
 
-  
 
-