I\'ve implemented AES/CTR on Android using the built-in Cipher class. Decryption appears to be far too slow for my purposes, with a 128KB block taking approximately 6 secon
Yes, heavy lifting like that in a contained function is exactly where the NDK would shine. Keep in mind that Java is interpreted, and on pre-2.2 Android, there is no JIT, so every instruction is interpreted each time - that is a huge overhead.
Even with JIT, every array access does implicit bounds checking, so there is lots and lots of overhead.
If you write this function in C++, it will be significantly faster.