2010-04-06 18 views
6

Estoy intentando escribir una pequeña aplicación que utiliza el algoritmo BouncyCastle, desde el BouncyCastleProvider.java se dice que tenemos que importar y añadir el proveedor durante el tiempo de ejecución por el siguiente códigocómo agregar algoritmo BouncyCastle a Android

import org.bouncycastle.jce.provider.BouncyCastleProvider; Security.addProvider(new BouncyCastleProvider());

error - La importación de org.bouncycastle no se puede resolver; durante la importación error - BouncyCastleProvider no se puede resolver a un tipo; al llamar a addProvider

Creo que bouncycastle no cuenta con el SDK de Android 1.6, así que pensé en instalarlo por separado. ¿Cómo debería hacer esto? Si Bouncycastle se envía junto con SDK, ¿qué debo hacer para evitar estos errores? Estoy usando Android 1.6, eclipse-V3.4.0 en winXP. Gracias de antemano

+0

Consulte mi respuesta a otra pregunta similar: http: // stackoverflow.com/questions/4065379/how-to-create-a-bks-bouncycastle-format-java-keystore-that-contains-a-client-c/10026598 # 10026598 – Vipul

Respuesta

2

No estoy familiarizado con esta biblioteca en particular. Sin embargo, aquí hay instrucciones generales sobre cómo incluir una biblioteca entregada como un archivo 'jar' en un proyecto de Android.

Descargue el archivo jar y colóquelo en algún lugar de su estación de trabajo. Es posible que desee colocar en el directorio raíz del proyecto en el que lo está instalando, o tal vez en un directorio 'lib' en la raíz.

En Eclipse, seleccione Proyecto-> Propiedades, luego seleccione Java Build Path. A continuación, haga clic en Agregar tarros externos, navegue hasta donde coloque el archivo .jar, selecciónelo y haga clic en Abrir.

Ahora escriba o pegue un código que intente utilizar las clases en el contenedor. Si tiene suerte, aparecerá un icono de bombilla en el margen izquierdo. Al hacer clic en esto, le pedirá que agregue la declaración de importación correcta en la parte superior de su archivo .java.

Todavía hay cosas que pueden salir mal en este momento. La biblioteca puede hacer uso de contenido java * o javax * .no proporcionado por Android (tiene solo un subconjunto de estas bibliotecas). También puede tener dependencias de biblioteca adicionales propias. Hay otras razones por las cuales .jar puede no ser compatible con la plataforma Android.

Tenga en cuenta también que aumentará el tamaño de su archivo .apk para acomodar el nuevo contenido.

+0

intenté agregar el castillo hinchable y traté de getinstance de secretKeyFactory pero arroja una excepción sin dicho algoritmo – Vamsi

+0

Eso suena como una excepción local a esa biblioteca, no un problema de inclusión de la biblioteca. –

5

No debería necesitar agregar explícitamente BouncyCastle como proveedor. Como dices, ya está incluido con Android.

Aquí es lo que hago para obtener un cifrado AES BouncyCastle,

SecretKeyFactory keyFac = SecretKeyFactory.getInstance("PBEWithSHA256And256BitAES-CBC-BC"); 

Si nos fijamos en BouncyCastleProvider.java verá una referencia a PBEWithSHA256And256BitAES-CBC-BC junto con algunas otras cifras proporcionadas por BouncyCastle.

+1

arroja una excepción NoSuchAlgorithm – Vamsi

+1

Extraño. No estoy seguro de cuál es el problema. Aquí está el mismo código que corro, http://upm.svn.sourceforge.net/viewvc/upm/android/trunk/src/com/u17od/upm/crypto/EncryptionService.java?view=markup. Funciona en Android 1.5 y 2.1. – Adrian

+0

AES no es el único algoritmo de encriptación que proporciona BouncyCastle. BC es necesario para el cifrado EC, por ejemplo. –

1

Usted necesitaría para compilar la biblioteca antes de Cristo con un nombre diferente, ya que tendrá un conflicto con el built-in antes de Cristo ya está en Android - recompilar y referencia como BC2 o org.BouncyCastle2.x

8

O mejor Todavía uso SpongyCastle ya que el BC enviado con Android es paralizado y viejo.

+5

¿Sigue siendo cierto? ¿Puedes ser más específico que "viejo"? ¿Puedes definir lisiado? El enlace SpongyCastle que incluye tampoco lo explica. –

+0

¿Alguna respuesta a las preguntas de Sam? – vojta

Cuestiones relacionadas