Я разрабатываю приложение для Android для шифрования файлов по телефону. В поисках, я нашел эту тему: How to encrypt file from SD card using AES in Android?Увеличьте скорость шифрования AES android
Метод работает нормально, но очень медленно шифровать файлы ... В этой строке: byte [] d = новый байт [8]; почему только 8 байтов? не можем ли мы установить более высокое значение?
Кроме того, вы знаете способ быстрого шифрования файлов? Я слышал о crypto ++ для собственной реализации кода, но как я могу реализовать JNI в своем приложении?
Спасибо,
EDIT: Шифрование функция
public void encrypt (String RSAPrivateKey, String Key, byte[] iv, String zipname, ZipEncryptAsyncTask task) throws IOException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, InvalidAlgorithmParameterException
{
FileInputStream fis = new FileInputStream (zipname + ".temp");
FileOutputStream fos = new FileOutputStream (zipname);
SecretKeySpec sks = new SecretKeySpec (Base64.decode(Key, Base64.DEFAULT), "AES");
IvParameterSpec ivspec = new IvParameterSpec (iv);
Cipher cipher = Cipher.getInstance ("AES/CBC/PKCS5Padding");
fos.write(String.valueOf(RSAPrivateKey.getBytes().length).getBytes());
fos.write(RSAPrivateKey.getBytes());
cipher.init(Cipher.ENCRYPT_MODE, sks, ivspec);
CipherOutputStream cos = new CipherOutputStream(fos, cipher);
long size = 0;
byte[] d = new byte[8];
for(int b; (b = fis.read(d)) != -1;)
{
cos.write(d, 0, b);
task.doProgress((size += 8));
}
cos.flush();
cos.close();
fis.close();
new File(zipname + ".temp").delete();
}
Пожалуйста, не могли бы вы разместить свой код шифрования? Может быть, мы сможем найти что-то, что поцарапать там. –
добавлен код, спасибо – Flo354
Предлагаю вам обернуть ваши файлы FileInputStreams и FileOutputStreams в BufferedInputStreams и BufferedOutputStreams, профилировать обе версии и сравнить производительность. Вы даже должны попробовать с разными размерами буфера. Кстати, вы должны выяснить, можете ли вы реорганизовать метод, который имеет переменную 'cipher' и ее инициализацию' cipher.init', похоже, что она может что-то улучшить? –