gpt4 book ai didi

java - 使用 AES 加密的 Android 中的内存不足异常

转载 作者:行者123 更新时间:2023-11-30 09:34:58 26 4
gpt4 key购买 nike

这是我的源代码:

public static byte[] encrypt(byte[] Data) throws Exception {
Log.i("Debug", "initial data is" + java.util.Arrays.toString(Data));

Key key = generateKey();
Cipher c = Cipher.getInstance(ALGO);
c.init(Cipher.ENCRYPT_MODE, key);
byte[] encVal = c.doFinal(Data);

Log.i("Debug", "encrypted data is" + java.util.Arrays.toString(encVal));
;
return Base64.encode(encVal,0);
}

当byte[]数据的数据长度在800kb左右时,我继续接收。

     java.lang.OutOfMemoryError

你能帮我如何更改我的代码来避免这个问题吗?为了避免解密时出现 block 不完整的错误,我不得不用base64编码。

最佳答案

好吧,一个问题是您正在做的日志记录 - 通过将数据转换为字符串,您可能每个字节最多使用 5 个字符,每个字符是 2 个字节,因此每个原始文件使用 10 个字节的内存字节。然后您使用字符串连接,因此所需的内存量加倍(由于复制)。

因此,我怀疑 仅日志记录语句 每个占用大约 16MB。记录完整的 800KB 数组对您真的有用吗?

如果删除日志语句会怎样?

关于java - 使用 AES 加密的 Android 中的内存不足异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11600419/

26 4 0
文章推荐: java - 在 IntelliJ Idea 中删除 .orig 文件
文章推荐: Javascript:与算术运算符不一致?
文章推荐: javascript - 根据另一个选择的结果更改 HTML