2010-08-25 8 views
5

He visto el ejemplo here. Todo está muy bien y lo entiendo, sin embargo, depende de la biblioteca de bounceycastle para el proveedor. No quiero agrupar otras bibliotecas de terceros con mi aplicación si puedo evitarlo. No necesito la seguridad de estilo fort knox, solo una encriptación simétrica básica para transmitir por cable. ¿Cómo puedo hacer un cifrado básico en Android sin bibliotecas de terceros?Cifrado básico en Android

gracias

Respuesta

5

Well BouncyCastle está incluido en Android, como puedes ver si tratas de incluirlo obtendrás: D/dalvikvm(9268): DexOpt: not verifying 'Lorg/bouncycastle/x509/extension/SubjectKeyIdentifierStructure;': multiple definitions y así sucesivamente.

Sin embargo, no todos los algoritmos están implementados: obtendría una NoSuchAlgorithmException. En Android 2.2 He encontrado estos a ser implementadas:

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

Recibo una breve descripción corta de la llamada a doFinal al encriptar (usando el ejemplo vinculado) - ¿alguna idea? – MalcomTucker

+0

Bueno, el ejemplo funciona bien en mi Nexus one, 2.2. Y no debería obtener una breve excepción, pero siempre puede intentar configurar: byte [] cipherText = new byte [2048]; Para ver si el cifrado funciona, aunque obtendría algo de basura en las impresiones. –

+1

my cipherText es mucho más grande que eso, unos 3800 bytes. ¿El byte []. Length necesita ser un múltiplo de 16? – MalcomTucker

5

no quiero a ningún paquete bibliotecas adicionales de terceros con mi aplicación si puedo evitarlo.

No necesita bibliotecas de terceros para usar javax.crypto. Hay muestras en línea de usar javax.crypto, como this y this. Si necesita un codificador Base64, hay uno en Android 2.2, o hay implementaciones de código abierto disponibles para eso también.

+0

¿Conoce qué algoritmos de cifrado que Android es compatible con AC? Sé que es una versión paralizada de BC pero no puede encontrar lo que realmente admite. –

+0

@metalideath: fuera de mi cabeza, no. Además, alguien reenvasó a BC como org.spongycastle para superar la versión "lisiada", en caso de que lo que necesita no esté disponible a través del paquete 'javax.crypto'. – CommonsWare