2011-02-15 4 views
0

Je ne sais pas si cela est possible ... j'ai le code dans mon application qui encrypte les images ...Android - Augmenter la vitesse du cryptage

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(); 
    } 

Chaque fois que je décode un Crypter ou l'image (que mon application fait beaucoup) il prend beaucoup de temps, des conseils sur la façon d'augmenter le processus afin que les utilisateurs ont une meilleure expérience?

Répondre

3

Si vous souhaitez échanger un peu de sécurité contre la vitesse, vous ne pouvez chiffrer que certaines parties de l'image: par exemple 100 premiers octets sur 1000 octets de flux de données. En outre, utilisez AsyncTask, comme suggéré par @Estel, afin que votre interface utilisateur ne subisse pas de retard.

+0

Des liens montrant des exemples de comment je pourrais implémenter un AsyncTask? – Beginner

+0

http://developer.android.com/reference/android/os/AsyncTask.html –

+0

http://labs.makemachine.net/2010/05/android-asynctask-example/ –

1

Ma meilleure suggestion serait d'augmenter la taille de la mémoire tampon

1

Si votre expérience utilisateur souffre, avez-vous mis l'cet algorithme de chiffrement dans un AsyncTask? Pour les opérations coûteuses comme celle-ci, une ASyncTask est nécessaire pour que l'expérience utilisateur reste fluide.

2

Vous pourriez choisir un autre mode AES, différent de celui de la BCE. Non seulement pour la vitesse, mais pour faire un better job que la BCE de chiffrer des images.

+0

D'autres modes sont supérieurs à la BCE pour beaucoup de choses, mais ils ne sont pas plus vite. –

+0

Cela peut dépendre du framework, par exemple: http://www.cryptopp.com/benchmarks.html –

0
  1. plus grande utilisation des tampons
  2. utilisation AsyncTask. Vous pouvez même afficher les progrès de l'utilisateur dans la barre de notification, ce qui devrait le rendre heureux.
  3. Utilisez NDK pour écrire du code natif pour le chiffrement
Questions connexes