Thordax
Thordax

Reputation: 1733

Android AES Decrpyt string takes too long

I'm using AES Decryption on my Android Project to decrypt large string objects ( > 1 MB ).

I'm using this method :

public static String decryptAES(String cryptedString, byte[] byteArrayAESKey) {

    try {
        IvParameterSpec ips = new IvParameterSpec(General.InitVector.getBytes("UTF-8"));
        SecretKey aesKey = new SecretKeySpec(byteArrayAESKey, "AES");
        byte[] TBCrypt = Base64.decode(cryptedString, Base64.DEFAULT);
        // Decryption cipher
        Cipher decryptCipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
        // Initialize PBE Cipher with key and parameters
        decryptCipher.init(Cipher.DECRYPT_MODE, aesKey, ips);
        // Decrypt the cleartext
        byte[] deciphertext = decryptCipher.doFinal(TBCrypt); // this may take a long time depending on string input length
        return new String(deciphertext, "UTF-8");
    } catch (Exception e) {
        e.printStackTrace();
        Log.e("AES", "Decrypt failed : " + e.getMessage());
        return "";
    }
    }

It works well, but on large encrypted strings, it takes a long time on many devices.

Is there a way to improve this method on android devices ? Should I cut the encrypted string to accelerate the process ? Should I use SpongyCastle ?

Upvotes: 2

Views: 626

Answers (2)

Leonardo Pugliese
Leonardo Pugliese

Reputation: 129

Is there a way to improve this method on android devices ?

Maybe, you could take a look here , and there's saying that the AES is pretty fast, though.

Should I cut the encrypted string to accelerate the process ?

Yes, this should be the problem. Usually you only have to encrypt the critical parts of the data. Maybe a refactor should resolve the question.

Should I use SpongyCastle ?

Don't know, but if i where you i would first look at the data encrypted.

Upvotes: 0

MGorgon
MGorgon

Reputation: 2607

byte[] deciphertext = decryptCipher.doFinal(TBCrypt); Dont do that! Instead consider using streams, maybe directly to output file stream (if needed)?.

Upvotes: 1

Related Questions