0

在 CBC 解密循环中,我正在处理小(< 32 字节)字节块,所以我不能使用 StringBuilder,因为堆爆炸了。我想我应该把解密的字节转储到某种缓冲数组中。在这一点上,我对如何从这些字节设置和填充 InputStreamReader 感到困惑。如果我可以填充这个 InputStreamReader,那么我想在它周围包装一个 BufferedReader。然后我计划一次从 BufferedReader 读取一行,因为我的文本处理只需要一次操作一行。在此过程中,我不想将任何数据写入磁盘。我对如何处理从我的 CBC 解密循环中获得的字节感到非常困惑。他们显然需要缓冲(因为我的文本文件的一行可能是解密块大小的 20 倍)但我 我对充当中间人的缓冲区感到困惑。我正在使用 BouncyCastle,但目前这块拼图并没有真正引起我的问​​题。~感谢新手的帮助。

4

1 回答 1

2

从解密块中获取字节,并将它们转储到 PipedOutputStream。然后从中创建一个 PipedInputStream,适当地包装,并将其提供给您的其他代码。

这最好在两个单独的线程中完成。它可能合二为一,但你必须小心不要阻塞(尤其是阅读),否则你会被卡住。

或者您可以在解密器上编写自己的自定义 InputStream 实现。

于 2013-03-11T23:51:25.317 回答