21 julio 2010

El proyecto Bouncy Castle

¡Genial, en el curso deel DNIe a se habla de programción!

La imagen promociona el proyecto Bouncy Castle, que ya se puede descargar en su web oficial, de software libre que desarrolla una serie de librerías criptográficas libres y, entre otros, ofrece un provider para el JCE de Java.

Además del código del proyecto se puede encontrar una extensa documentación así como diversos ejemplos de uso de las librerías.

Además de la implementación de un provider JCE para usar en Java también contiene otras utilidades que pueden ser de interés a la hora de hacer una aplicación basada en el DNI electrónico, especialmente si se quieren implementar servicios de valor añadido. Las más relevantes son:

  • Librería para leer y escribir objetos codificados en ASN.1
  • API para comunicaciones TLS de cliente
  • Generador de Certificados X.509, CRLs y ficheros PKCS#12
  • Generación de Certificados de Atributos
  • Generación y procesado de objetos S/MIME y CMS (PKCS#7/RFC 3852)
  • Generación y procesado de consultas OCSP (RFC 2560)
  • Generación y procesado de sellos de tiempo TSP (RFC 3161)
  • Generación y procesado de objetos OpenPGP (RFC 2440).


Señores, no dispongo de tiempo por l momento, aí pes, dejo este tema a mitad, para abordr cuando sepa más.

SALUDOS :P


______________________

A continuación se muestra un ejemplo de aplicación realizada en Java usando los servicios criptográficos del provider Bouncy Castle en lugar del provider por defecto que viene en el sistema.

La aplicación en cuestión realiza el Hash (resumen criptográfico) de un fichero de texto en claro.

EJEMPLO de código:

/* Cargar "provider" */

Security.addProvider(new BouncyCastleProvider());

/* Crear función resumen, SHA-1 en el ejemplo */

MessageDigest messageDigest = MessageDigest.getInstance("SHA");

/* Leer fichero de 1k en 1k y resumir*/

byte[] buffer = new byte[1000];

FileInputStream in = new FileInputStream();

int leidos = in.read(buffer, 0, 1000);

while (leidos != -1)

{

// Pasa texto claro a la función resumen

messageDigest.update(buffer);

leidos = in.read(buffer, 0, 1000);

}

in.close();

// Completar el resumen

byte[] resumen = messageDigest.digest();

// Mostrar resumen

System.out.println("RESUMEN:");

mostrarBytes(resumen);

System.out.println();

2 comentarios:

  1. hi.. just dropping by here... have a nice day! http://kantahanan.blogspot.com/

    ResponderEliminar
  2. Buenas,
    Mira me gustaria des/encriptar un texto con AES en BouncyCastle y me estoy volviendo loco para hacerlo. Conoces algun manual, libro, tutorial o alguna forma de aprender a hacerlo?
    Gracias!

    ResponderEliminar