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>