2009-05-23 20 views

risposta

0

Il castello gonfiabile ha una biblioteca fantastica per farlo. Il problema principale sarà come ottenere la chiave in modo sicuro. Ho trovato che .NET e Java serializzano le chiavi in ​​modi incompatibili, così ho finito per usare Bouncy Castle su entrambi i lati per facilitare il trasferimento delle chiavi, dato che è stato trasferito usando RSA, per ragioni di sicurezza.

5

Mi raccomando di utilizzare l'API BlackBerry (Bouncy Castle funzionerà, ma perché complicare le cose?).

Utilizzare il pacchetto net.rim.crypto: si utilizza tutta la crittografia simmetrica per utilizzare lo standard RIM signing keys per l'esecuzione su un dispositivo ($ 20 e 2-3 giorni per ottenere) - nel frattempo è possibile fai tutto con il simulatore.

Fondamentalmente si vorrà creare un PKCS5UnformatterEngine che avvolge un CBCDecryptorEngine che avvolge un AESDecryptorEngine. Probabilmente avvolgere tutto in un BlockDecryptor per poterlo trattare come in InputStream. Qualcosa di simile (ed è stato un po 'di tempo da quando ho fatto questo, quindi potrebbe non funzionare al 100% come scritto):

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 
+0

che è una risposta migliore del mio, ma in mia difesa non ho visto la tag blackberry fino a quando ho letto il tuo. :-) – wds

Problemi correlati