Recomiendo usar la API de BlackBerry (Bouncy Castle funcionará, pero ¿para qué complicar las cosas?).
Utilice el paquete net.rim.crypto: está utilizando todo el cifrado simétrico, por lo que solo necesitará el estándar RIM signing keys para ejecutar en un dispositivo ($ 20 y 2-3 días para obtenerlo); mientras tanto, puede hacer todo con el simulador.
Básicamente, querrá crear un PKCS5UnformatterEngine que envuelva un CBCDecryptorEngine que envuelve un AESDecryptorEngine. Probablemente envuelva todo en un BlockDecryptor para que pueda tratar como en InputStream. Algo así como (y que ha sido un poco de tiempo desde que he hecho esto, así que puede que no funcione al 100% tal como está escrita):
InputStream encryptedInput; // if you have a byte[] of data, use a ByteArrayInputStream
AESKey key = new AESKey(<your key data as a byte[]>)
InitializationVector iv = new InitializationVector(<your iv data as a byte[]>) // of course you need to know your IV since you're doing CBC encryption
BlockDecryptor decryptor = new BlockDecryptor(
new PKCS5UnformatterEngine(
new CBCDecryptorEngine(
new AESDecryptorEngine(key),
iv
)
)
);
// then decryptor acts as an InputStream which gives you your decrypted, unpacked data
decryptor.read(buffer); // buffer will contain decrypted, unpacked data
que es una respuesta mejor que la mía, pero en mi defensa que no vi la etiqueta de blackberry hasta que lea el tuyo. :-) – wds