Android - Увеличение скорости шифрования - PullRequest
0 голосов
/ 15 февраля 2011

Я не уверен, если это возможно ... У меня есть код в моем приложении, который шифрует изображения ...

Cipher cipher;
SecretKey key;
byte[] buf = new byte[1024];
DesEncrypter() {
   byte[] iv = new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
      0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 };
   key = new SecretKeySpec(iv, "AES");
   try {
     cipher = Cipher.getInstance("AES/ECB/PKCS7Padding", "BC");
     cipher.init(Cipher.ENCRYPT_MODE, key);          
   } 
   catch (NoSuchProviderException e) {}
 }        

public void encrypt(InputStream in, OutputStream out) {
    try {
      out = new CipherOutputStream(out, cipher);
      int numRead = 0;
      while ((numRead = in.read(buf)) >= 0) {
          out.write(buf, 0, numRead);
      }
      out.close();
    } 

Каждый раз, когда я шифрую или дешифрую изображение (что мое приложение делает много)Это займет очень много времени, какие-либо советы о том, как увеличить процесс, чтобы пользователи имели лучший опыт?

Ответы [ 5 ]

3 голосов
/ 15 февраля 2011

Если вы хотите обменять немного безопасности на скорость, вы можете зашифровать только определенные части изображения: например, первые 100 байтов из каждых 1000 байтов потока данных.

Также используйте AsyncTask, как предложил @Estel, чтобы ваш пользовательский интерфейс не страдал от задержек.

2 голосов
/ 15 февраля 2011

Вы можете выбрать другой режим AES, отличный от ECB.Не только для скорости, но и для лучшей работы , чем ECB для шифрования изображений.

1 голос
/ 15 февраля 2011

Если ваш пользовательский опыт страдает, вы поместили этот алгоритм шифрования в ASyncTask?Для таких дорогостоящих операций необходим ASyncTask, чтобы пользовательский интерфейс был гладким.

1 голос
/ 15 февраля 2011

Мое лучшее предложение - увеличить размер буфера

0 голосов
/ 15 февраля 2011
  1. Использование больших буферов
  2. Использование AsyncTask.Вы даже можете показать прогресс пользователя в панели уведомлений, что должно его радовать.
  3. Используйте NDK для написания собственного кода для шифрования
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...