我有一个由另一个OutputStream支持的CipherOutputStream。完成将需要加密的所有数据写入CipherOutputStream之后,需要附加一些未加密的数据。

The documentation for CipherOutputStream表示,调用flush()不会强制最终块退出加密器;为此,我需要调用close()。但是close()也关闭了基础OutputStream,我仍然需要编写更多内容。

如何在不关闭流的情况下将最后一个块强制出加密器?我需要编写自己的NonClosingCipherOutputStream吗?

最佳答案

如果您没有对Cipher的引用,则可以将FilterOutputStream传递给创建CipherOutputStream的方法。在FilterOutputStream中,重写close方法,以使其实际上不关闭流。

07-26 06:31