我正在開發Android應用程序,我正在使用Android的密碼類對進行解密。Cipher.dofinal出現內存不足錯誤()
代碼:
private byte[] decrypt_chunk(byte[] data, ByteString chunk_encryption_key) {
SecretKeySpec skeySpec = new SecretKeySpec(chunk_encryption_key.toByteArray(), 1, 16, "AES");
Cipher cipher;
byte[] decrypted = new byte[0];
try {
cipher = Cipher.getInstance("AES/CFB/NoPadding");
cipher.init(Cipher.DECRYPT_MODE, skeySpec, new IvParameterSpec(getIV(0)));
decrypted = cipher.doFinal(data);
} catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (InvalidAlgorithmParameterException e) {
e.printStackTrace();
} catch (ShortBufferException e) {
e.printStackTrace();
}
return decrypted;
}
我得到「內存不足」錯誤,而解密大文件。
我有以下問題:
在當前的代碼是什麼chanegs可以修復OOM錯誤?
將Cipher.update()可以幫助解決這個問題?如果是的話,如何實施呢?
謝謝。
如何加載數據? –
我正在從在線服務器讀取數據並將其存儲在byte []中。 –
您無法一次加載整個文件。您需要一次加載塊。 –