У меня есть код шифрования и дешифрования, который я использую для шифрования и дешифрования видеофайлов (mp4). Я пытаюсь ускорить процесс расшифровки, так как шифрование не очень актуально для моего случая. Вот код, который у меня есть для процесса расшифровки:
private static void decryptFile() throws IOException, ShortBufferException, IllegalBlockSizeException, BadPaddingException
{
//int blockSize = cipher.getBlockSize();
int blockSize = cipher.getBlockSize();
int outputSize = cipher.getOutputSize(blockSize);
System.out.println("outputsize: " + outputSize);
byte[] inBytes = new byte[blockSize];
byte[] outBytes = new byte[outputSize];
in= new FileInputStream(inputFile);
out=new FileOutputStream(outputFile);
BufferedInputStream inStream = new BufferedInputStream(in);
int inLength = 0;;
boolean more = true;
while (more)
{
inLength = inStream.read(inBytes);
if (inLength == blockSize)
{
int outLength
= cipher.update(inBytes, 0, blockSize, outBytes);
out.write(outBytes, 0, outLength);
}
else more = false;
}
if (inLength > 0)
outBytes = cipher.doFinal(inBytes, 0, inLength);
else
outBytes = cipher.doFinal();
out.write(outBytes);
}
Мой вопрос заключается в том, как ускорить процесс расшифровки в этом коде. Я попытался расшифровать MP4-файл размером 10 МБ, и он расшифровывается за 6-7 секунд. Тем не менее, я стремлюсь <1 секунды. Еще одна вещь, которую я хотел бы знать, заключается в том, что моя запись в FileOutputStream действительно замедляет процесс, а не сам процесс расшифровки. Любые предложения о том, как ускорить процесс здесь. </p>
Я использую AES для шифрования / дешифрования.
Пока я не найду решение, я буду использовать ProgressDialog, который скажет пользователю подождать, пока видео не будет расшифровано (очевидно, я не буду использовать слово: расшифровано).