Как использовать PGP в Camel Routes

Apache Camel [http://camel.apache.org/] - это мощная инфраструктура корпоративной маршрутизации, которую можно использовать для отправки информации любым способом и практически с любым протоколом, который вы хотите использовать. И ни для кого не секрет, насколько важно шифрование, поэтому их совместное использование имеет смысл. PGP [https://en.wikipedia.org/wiki/Pretty_Good_Privacy], в частности, означает «Довольно хорошая конфиденциальность» и стал одним из самых популярных алгоритмов шифрования в последние годы. Часто используется для подписи, шифрования,

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, но он дает представление о том, как вы будете использовать его в реальной системе.

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

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

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

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

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

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

Ресурсы

comments powered by Disqus

Содержание