Рубрики
Без рубрики

Как использовать PGP в верблюжьих маршрутах

Автор оригинала: Scott Robinson.

Apache Camel – это мощная корпоративная платформа маршрутизации, которую можно использовать для отправки информации любым способом, практически с любым протоколом, который вы захотите использовать. И ни для кого не секрет, насколько важно шифрование, поэтому использовать их вместе просто имеет смысл.

В частности, PGP означает “Довольно хорошая конфиденциальность” и стал одним из самых популярных алгоритмов шифрования в последние годы. Он часто используется для подписи, шифрования и дешифрования любых данных, включая текст, электронную почту или даже целый раздел диска.

Код

А теперь перейдем к коду:

// 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");
    }
});

Этот простой пример в основном является доказательством концепции, чтобы показать, как вы можете шифровать и расшифровывать данные с помощью PGP и Camel, но он дает представление о том, как вы будете использовать их в реальной системе.

По сути, то, что делает приведенный выше код, – это получение данных из потока ввода и направление их по двум разным путям. Первый-это маршрут direct:original , который просто сохраняет входные данные в файл, чтобы вы могли просмотреть их позже.

Второй маршрут , на который он отправляется, – это direct:encrypt , который затем сортирует данные с помощью алгоритма PGP и предоставленного нами ключа. Оттуда вывод затем сохраняется в файл, чтобы вы могли проверить зашифрованные данные и , отправленные по другому маршруту, который фактически расшифрует их для вас (чтобы вы могли видеть весь процесс).

Окончательный маршрут, прямой:незашифрованный , просто принимает данные, зашифрованные вашим открытым ключом, и расшифровывает их с помощью нашего секретного ключа, в конечном итоге сохраняя их в файл.

Поскольку данные сохраняются в каждой точке маршрута, вы можете убедиться, что данные действительно зашифрованы и расшифрованы.

Если вы используете Maven, не забудьте добавить следующее в свой POM:


  org.apache.camel
  camel-crypto
  2.9.0

Ресурсы