Cómo usar PGP en Camel Routes

C

apache Camel es un poderoso marco de enrutamiento empresarial que puede usarse para enviar información de cualquier manera, con casi cualquier protocolo que desee usar. Y no es ningún secreto lo importante que es el cifrado, por lo que usar los dos juntos tiene sentido.

PGP, específicamente, significa “Pretty Good Privacy” y se ha convertido en uno de los algoritmos de cifrado más populares en los últimos años. A menudo se utiliza para firmar, cifrar y descifrar cualquier tipo de datos, incluidos texto, correos electrónicos o incluso una partición de disco completa.

El código

Y ahora con el código:

// Public Key FileName
final String keyFileName = "/path/to/public.gpg";

// Private Key FileName
final String keyFileNameSec = "/path/to/private.gpg";

// Keyring Userid Used to Encrypt
final String keyUserid = "userid_for_key";

// Private key password
final String keyPassword = "sooper_sekret_pass";

CamelContext context = new DefaultCamelContext();

context.addRoutes(new RouteBuilder() {
    public void configure() {
        from("stream:in")
          .multicast().to("direct:original", "direct:encrypt");

        // Save the original input
    	from("direct:original")
    	  .to("file:C:\Users\srobin\Desktop\crypto?fileName=original.txt");
	  
        // Encrypts and saves the input
    	from("direct:encrypt")
    	  .marshal().pgp(keyFileName, keyUserid)
    	  .multicast()
    	  .to("direct:unencrypt", "file:C:\Users\srobin\Desktop\crypto?fileName=encrypted.txt");
	  
        // Decrypts and saves the output
    	from("direct:unencrypt")
    	  .unmarshal().pgp(keyFileNameSec, keyUserid, keyPassword)
    	  .to("file:C:\Users\srobin\Desktop\crypto?fileName=unencrypted.txt");
    }
});

Este simple ejemplo es principalmente una prueba de concepto para mostrar cómo puede cifrar y descifrar datos usando PGP y Camel, pero transmite el punto de cómo lo usaría en un sistema real.

Básicamente, lo que hace el código anterior es tomar datos del stream entrada y dirigirlo a dos caminos diferentes. El primero es el direct:original route, que simplemente guarda la entrada en un archivo para que pueda verlo más tarde.

La segunda ruta a la que se envía es direct:encrypt, que luego calcula los datos mediante el algoritmo PGP y la clave que proporcionamos. A partir de ahí, la salida se guarda en un archivo para que pueda inspeccionar los datos cifrados y enviarlos a otra ruta que realmente los descifrará por usted (para que pueda ver todo el proceso).

La ruta final direct:unencrypt, simplemente toma datos cifrados con nuestra clave pública y los descifra con nuestra clave secreta, y finalmente los guarda en un archivo.

Dado que los datos se guardan en cada punto de la ruta, puede verificar que los datos estén realmente cifrados y descifrados.

Si está utilizando Maven, no olvide agregar lo siguiente a su POM:

<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-crypto</artifactId>
  <version>2.9.0</version>
</dependency>

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con tus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad