如何强制CipherOutputStream完成加密但是让底层流保持打开状态?

8 java encryption outputstream

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

CipherOutputStream的文档说调用flush()不会强制最后一个块脱离加密器; 因为我需要打电话close().但是close()也关闭了底层的OutputStream,我仍然需要写更多内容.

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

Tho*_*ler 8

如果你没有引用Cipher,你可以传递FilterOutputStream给创建的方法CipherOutputStream.在FilterOutputStream,重写该close方法,以便它实际上不关闭流.