我有一个由另一个OutputStream支持的CipherOutputStream。完成将需要加密的所有数据写入CipherOutputStream之后,需要附加一些未加密的数据。
The documentation for CipherOutputStream表示,调用flush()
不会强制最终块退出加密器;为此,我需要调用close()
。但是close()
也关闭了基础OutputStream,我仍然需要编写更多内容。
如何在不关闭流的情况下将最后一个块强制出加密器?我需要编写自己的NonClosingCipherOutputStream吗?
最佳答案
如果您没有对Cipher
的引用,则可以将FilterOutputStream
传递给创建CipherOutputStream
的方法。在FilterOutputStream
中,重写close
方法,以使其实际上不关闭流。