gpt4 book ai didi

android - Android 中的 AES 解密速度慢

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:18:42 26 4
gpt4 key购买 nike

我尝试使用 AES 128 位 key 解密一个 4.2 MB 的 .dcf 文件,但解密需要 33 秒(在函数 cipher.doFinal(data) 上),这正常吗?

这是一个代码 fragment :

long start = System.currentTimeMillis()/1000L;
try {
SecretKeySpec skeySpec = new SecretKeySpec(key, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, skeySpec, ivspec);

android.util.Log.d("TEST", "Start decoding...." + String.valueOf(length));

byte[] decrypted = cipher.doFinal(content);

File file2 = new File(Environment.getExternalStorageDirectory().getPath() + "/test.mp3");
OutputStream os = new FileOutputStream(file2);
os.write(decrypted);
} catch (Exception ex) {
ex.printStackTrace();
}
long end = System.currentTimeMillis()/1000L;

android.util.Log.d("TEST","Time "+ String.valueOf(end-start));

最佳答案

您应该尝试在不写入文件的情况下花费时间,即在调用 cipher.doFinal() 之前和之后调用 System.currentTimeMillis() .

话虽这么说,基于 Android 的手机通常使用时钟频率为 500 MHz 或更高的最新 ARM 处理器,而这样的野兽在理论上能够每秒对数兆字节的数据进行 AES 加密或 AES 解密。

但是,Android 代码使用了一个名为Dalvik 的几乎是Java 的虚拟机。 .在 Android-2.2 之前,这是一个解释器(没有 JIT 编译器),这意味着它对于计算密集型任务有点慢。 如果您观察到的平庸性能真的来自 AES 操作本身(而不是文件写入)那么合理的答案是您的 VM 提供了一个 AES 实现,它是用Java 并用 Dalvik 解释。在这种情况下,除了希望出现更好的 VM 实现之外几乎没有其他解决方法(VM 可以使用 AES 的 native 代码实现;此外,对于 Android 2.2 及更高版本,Dalvik 有一个 JIT compiler 应该可以提高代码的性能执行)。

关于android - Android 中的 AES 解密速度慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4663912/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com