如何将解密的文本文件字节块转储到InputStreamReader中?

时间:2013-03-11 23:39:26

标签: java encryption inputstreamreader

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

1 个答案:

答案 0 :(得分:2)

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

最好在两个单独的线程中完成。它可能在一个工作,但你必须小心不要阻止(特别是阅读),否则你会陷入困境。

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