Android AES解密需要时间

时间:2017-09-21 06:00:27

标签: android performance encryption cryptography aes

我做过研究并试图找到解决方案,但我觉得自己很无助。 我有持续运行的应用程序(音乐应用程序,全天候运行),如果有重新启动需要应用程序自动执行。我们的曲目是加密的,在播放之前我们解密。但是我发现在重新启动后第一次解密需要花费太多时间。有时5分钟,10分钟,18分钟。不知道发生了什么,这种情况发生在Android 5操作系统的6个设备中。有人可以帮我吗?

这是我的代码段。

File f1 = new File(inputFile);
if (f1.exists()) {
  CommanFunction.writeErrorLogInFile(MyApplication.getmContext(), 
    "LodingMusic Call Start --> doCrypto() " + f1.getAbsolutePath());
  inputStream = new FileInputStream(inputFile);
  outputStream = new FileOutputStream(outputFile);
  byte[] iv = key.getBytes("UTF-8");
  IvParameterSpec ivParams = new IvParameterSpec(iv);
  Key secretKey = new SecretKeySpec(key.getBytes(), ALGORITHM);
  Cipher cipher = Cipher.getInstance(TRANSFORMATION);
  cipher.init(cipherMode, secretKey, ivParams);
  CipherInputStream cis = new CipherInputStream(inputStream, cipher);
  int b;
  byte[] d = new byte[131072];
  while ((b = cis.read(d)) != -1) {
    outputStream.write(d, 0, b);
  }
  outputStream.flush();
  outputStream.close();
  cis.close();
  CommanFunction.writeErrorLogInFile(MyApplication.getmContext(), 
    "LodingMusic Call End --> doCrypto() " + f1.getAbsolutePath());
}

更新

好的,我已经做了进一步的调查,这段代码需要时间:

while ((b = cis.read(d)) != -1) {
        outputStream.write(d, 0, b);
      }

有人可以帮助我吗?

0 个答案:

没有答案