2013-03-11 40 views
0

在CBC解密循環中,我正在處理小字節塊(< 32字節),所以我無法使用StringBuilder,因爲Heap爆炸了。我想我應該把解密的字節轉儲到某種緩衝數組中。在這一點上,我很困惑如何從這些字節設置和填充InputStreamReader。如果我可以填充這個InputStreamReader,那麼我想在它周圍包裝一個BufferedReader。然後,我計劃每次從BufferedReader讀取一行,因爲我的文本處理只需要一次操作一行。在此過程中,我不想將任何數據寫入磁盤。我只是對我從CBC解密循環獲得的字節做什麼感到困惑。他們顯然需要緩衝(因爲我的文本文件的一行可能是解密塊的大小的20倍),但我對作爲中間人的緩衝區感到困惑。我正在使用BouncyCastle,但這一難題目前並沒有真正引起我的問​​題。 〜感謝新手幫忙。如何將我解密的文本文件字節塊轉儲到InputStreamReader中?

+0

注:我沒有看過任何BouncyCastle的便利,因爲我想了解Java提供的緩衝區/流基礎知識。但我肯定會接受基於BC工具的想法。 – fooledbyprimes 2013-03-11 23:50:06

回答

2

從您的解密塊取出字節,並將它們轉儲到PipedOutputStream中。然後從中創建一個PipedInputStream,並進行適當的換行,並將其提供給其他代碼。

這最好在兩個獨立的線程中完成。它可以在一個工作,但你必須小心不要阻止(特別是閱讀),否則你會卡住。

或者你可以在解密器上編寫自己的自定義InputStream實現。

+0

我會去執行InputStream。 – 2013-03-11 23:53:48

+0

感謝PipeStreams上的提示。我想知道PipedIn/OutStreams是否適用於Android。 – fooledbyprimes 2013-03-12 00:18:01

相關問題