Автор оригинала: 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