Я прибегаю к отдельным логическим значениям:
Bool cond1 == (var1 && var2);
Bool cond2 == (var3 && var4);
if ( cond1 && cond2 ) {}
Я рекомендую использовать BlackBerry API (Bouncy Castle будет работать, но зачем все усложнять?).
Используйте пакет net.rim.crypto - вы используете все симметричное шифрование, поэтому вам понадобятся только стандартные ключи подписи RIM для запуска на устройстве (20 долларов США и 2-3 дня для получения) - а пока вы можете делать все на симуляторе.
В основном вы » Я хочу создать PKCS5UnformatterEngine, который обертывает CBCDecryptorEngine, который обертывает AESDecryptorEngine. Вероятно, оберните все в BlockDecryptor, чтобы вы могли обрабатывать его, как в InputStream. Что-то вроде (и прошло немного времени с тех пор, как я это сделал, поэтому он может не работать на 100%, как написано):
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
I think the Bouncy Castle Library supports that. They provide some short tutorials too.
Bouncy castle has a fantastic library for doing this. The main problem will be how to get the key there in a secure way. I found that .NET and Java serialize the keys in incompatible ways, so I ended up using Bouncy Castle on both sides in order to facilitate key transfer, as it was transferred using RSA, for security sake.