6 MB バイト [] を復号化する必要があります。
Cipher pbeCipher = Cipher.getInstance("AES/CTS/NoPadding");
// Initialize cipher
pbeCipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);
doFinal(data);
このコードは Galaxy 2 では問題なく動作しますが、ヒープが 16 MB しかない HTC レジェンドで実行すると、OutOfMemory 例外が発生します。
そこで、データをチャンクに分割することにしましたが、このコードが機能しないため、おそらく何か間違ったことをしているのでしょう。私が間違っていることを見つけるのを手伝ってもらえますか?
byte[] result = null;
while (data.length> offset )
{
concatenateByteArrays(result, cipher.update(Arrays.copyOfRange(data, offset, offset+MB)));
offset+=MB;
}
return concatenateByteArrays(result,cipher.doFinal());