2010-08-25 13 views
5

Ho visto l'esempio here. Tutto bene e bene e lo capisco, tuttavia si basa sulla libreria di bounceycastle per il provider. Non voglio raggruppare altre librerie di terze parti con la mia app se posso aiutarla. Non ho bisogno di una forte sicurezza in stile Knox, solo una semplice crittografia simmetrica per la trasmissione via cavo. Come posso eseguire la crittografia di base su Android senza le librerie di terze parti?Crittografia di base su Android

grazie

risposta

5

Well BouncyCastle è incluso in Android, come potete vedere se provate ad includerlo otterreste: D/dalvikvm(9268): DexOpt: not verifying 'Lorg/bouncycastle/x509/extension/SubjectKeyIdentifierStructure;': multiple definitions e così via.

Tuttavia, non tutti gli algoritmi sono implementati - otterresti un NoSuchAlgorithmException. In Android 2.2 Ho trovato queste da attuare:

PBEWITHSHAAND128BITAES-CBC-BC PBEWITHSHAAND3-KEYTRIPLEDES-CBC 1.2.840.113549.1.1.7 PBEWITHSHA256AND256BITAES-CBC-BC PBEWITHSHAAND192BITAES-CBC-BC DESEDE DES 1.2.840.113549.3.7 PBEWITHSHAAND2-KEYTRIPLEDES-CBC 1.3.14.3.2.7 PBEWITHSHA256AND192BITAES-CBC-BC PBEWITHSHAAND256BITAES-CBC-BC PBEWITHSHAAND40BITRC2-CBC AES 2.16.840.1.101.3.4.1.42 PBEWITHSHA256AND128BITAES-CBC-BC 2.16.840.1.101.3.4.1.22 2.16.840.1.101.3.4.1.2

+1

Ricevo una piccola sorpresa sulla chiamata a doFinal durante la crittografia (usando l'esempio collegato) - qualche idea? – MalcomTucker

+0

Bene, l'esempio funziona bene sul mio Nexus, 2.2. E non dovresti avere una bassa percezione, ma puoi sempre provare a impostare: byte [] cipherText = new byte [2048]; Per verificare se la crittografia funziona, anche se si otterrebbero delle cianfrusaglie nelle stampe. –

+1

my cipherText è molto più grande di questo - alcuni 3800 byte. Il byte []. Length deve essere un multiplo di 16? – MalcomTucker

5

Non voglio per raggruppare tutte le librerie di terze parti aggiuntive con la mia app, se posso farne a meno.

Non sono necessarie librerie di terze parti per utilizzare javax.crypto. Esistono campioni online di javax.crypto, ad esempio this e this. Se hai bisogno di un codificatore Base64, ce n'è uno in Android 2.2, oppure ci sono implementazioni open source disponibili anche per questo.

+0

Sai che gli algoritmi di crittografia che Android aC supporta? So che è una versione paralizzata di BC ma non riesce a trovare ciò che effettivamente supporta. –

+0

@metalideath: Fuori dalla mia testa, no. Inoltre, qualcuno ha riconfigurato BC come org.spongycastle per superare la versione "storpiata", nel caso in cui ciò di cui hai bisogno non sia disponibile tramite il pacchetto 'javax.crypto'. – CommonsWare