java.lang.Object
java.io.OutputStream
java.io.FilterOutputStream
javax.crypto.CipherOutputStream
- 所有已实现的接口:
-
Closeable
,Flushable
,AutoCloseable
一个
CipherOutputStream
由一个OutputStream
和一个Cipher
对象组成,因此在将数据写入基础OutputStream
之前,write()方法首先处理数据。Cipher
对象在被CipherOutputStream
使用之前必须完全初始化。
例如,如果Cipher
对象被初始化用于加密,CipherOutputStream
将尝试在写出加密数据之前加密数据。
该类严格遵循其祖先类java.io.OutputStream
和java.io.FilterOutputStream
的语义,特别是失败语义。该类恰好具有其祖先类中指定的所有方法,并对它们进行了覆盖。此外,该类捕获所有不是由其祖先类抛出的异常。特别是,该类捕获由解密期间失败的完整性检查引发的BadPaddingException
和其他异常。这些异常不会被重新抛出,因此客户端将不会被告知完整性检查失败。由于这种行为,如果应用程序在身份验证模式下(例如GCM)需要在认证失败时明确通知,则该类可能不适合用于解密。这样的应用程序可以直接使用Cipher
API作为使用该类的替代方法。
对于使用该类的程序员来说,关键是不要使用在该类中未定义或重写的方法(例如稍后添加到其中一个超类的新方法或构造函数),因为这些方法的设计和实现不太可能考虑到CipherOutputStream
的安全影响。
- 自从:
- 1.4
- 参见:
-
Field Summary
Fields declared in class java.io.FilterOutputStream
out
-
Constructor Summary
ModifierConstructorDescriptionprotected
从一个OutputStream
构造一个CipherOutputStream
,而不指定Cipher
对象。CipherOutputStream
(OutputStream os, Cipher c) 从一个OutputStream
和一个Cipher
对象构造一个CipherOutputStream
。 -
Method Summary
Methods declared in class java.io.OutputStream
nullOutputStream
-
Constructor Details
-
CipherOutputStream
从一个OutputStream
和一个Cipher
对象构造一个CipherOutputStream
。
注意:如果指定的输出流或密码器为null
,则稍后在使用它们时可能会抛出NullPointerException
。- 参数:
-
os
-OutputStream
对象 -
c
- 已初始化的Cipher
对象
-
CipherOutputStream
从一个OutputStream
构造一个CipherOutputStream
,而不指定Cipher
对象。这将导致使用NullCipher
构造CipherOutputStream
的效果。
注意:如果指定的输出流为null
,则稍后在使用它时可能会抛出NullPointerException
。- 参数:
-
os
-OutputStream
对象
-
-
Method Details
-
write
将指定的字节写入此输出流。- 覆盖:
-
write
在类FilterOutputStream
中 - 参数:
-
b
- 字节。 - 抛出:
-
IOException
- 如果发生I/O错误。
-
write
将指定的字节数组中的b.length
字节写入此输出流。CipherOutputStream
的write
方法使用三个参数b
、0
和b.length
调用具有三个参数的write
方法。- 覆盖:
-
write
在类FilterOutputStream
中 - 参数:
-
b
- 数据。 - 抛出:
-
NullPointerException
- 如果b
为null
。 -
IOException
- 如果发生I/O错误。 - 参见:
-
write
从指定的字节数组中以偏移量off
开始的len
字节写入此输出流。- 覆盖:
-
write
在类FilterOutputStream
中 - 参数:
-
b
- 数据。 -
off
- 数据中的起始偏移量。 -
len
- 要写入的字节数。 - 抛出:
-
IOException
- 如果发生I/O错误。 - 参见:
-
flush
通过强制已由封装的Cipher
对象处理的任何缓冲输出字节写出来,刷新此输出流。由封装的
Cipher
对象缓冲并等待被处理的任何字节将不会被写出。例如,如果封装的Cipher
对象是块密码器,并且使用write
方法之一写入的字节总数小于密码器的块大小,则不会写出任何字节。- 指定者:
-
flush
在接口Flushable
中 - 覆盖:
-
flush
在类FilterOutputStream
中 - 抛出:
-
IOException
- 如果发生I/O错误。 - 参见:
-
close
关闭此输出流并释放与该流关联的任何系统资源。此方法调用封装的
Cipher
对象的doFinal
方法,导致封装的Cipher
对象缓冲的任何字节被处理。结果通过调用此输出流的flush
方法写出。此方法将封装的
Cipher
对象重置为其初始状态,并调用底层输出流的close
方法。- 指定者:
-
close
在接口AutoCloseable
中 - 指定者:
-
close
在接口Closeable
中 - 覆盖:
-
close
在类FilterOutputStream
中 - 抛出:
-
IOException
- 如果发生I/O错误。 - 参见:
-