使用 Apache Camel 进行 PGP 加密
PGP Encryption with Apache Camel
我正在尝试使用 PGP Encryption/Decryption 方法和 Apache Camel 来加密和解密文件。
此外,我还安装了 Kleopatra 以生成私钥和 public 密钥。使用 Kleopatra 我已经成功地生成了我的密钥。密钥和 public 密钥在“.asc”扩展名中。
下面是我用来加密文件的一段代码
import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
public class PGPENC {
public static void main(String[] args) throws Exception {
CamelContext camelContext = new DefaultCamelContext();
camelContext.addRoutes(new RouteBuilder() {
public void configure() throws Exception {
String publicKeyFileName = "file:C:\Users\karthick\Desktop\PGP\PGP\Public_Key.asc";
String keyUserid = "Karthick Sambanghi <karthick88it@gmail.com>";
from("file:C:\Users\ITSS\karthick\PGP\PGP\IN?noop=true;delete=true").marshal()
.pgp(publicKeyFileName, keyUserid).to("file:C:\Users\ITSS\Desktop\PGP\PGP\OUT");
}
});
camelContext.start();
Thread.sleep(5000);
camelContext.stop();
}
}
此处程序成功执行,没有任何错误,但文件未在 OUT 文件夹中加密。无论如何要检查 "camelContext" return 语句是成功还是失败?
以下是当前用于执行程序的库
bcpg-jdk15on-1.52
bcprov-ext-jdk15on-1.57
camel-context-2.22.1
camel-core-2.22.1
camel-crypto-2.19.1
slf4j-api-1.7.25
slf4j-nop-1.7.25
您可以通过在您的程序中添加 org.apache.log4j.BasicConfigurator.configure()
.
在控制台中启用 camel 日志记录
使用它您可以验证路由是否启动并使用了文件。
所以通过添加一些日志来执行你的程序:
CamelContext camelContext = new DefaultCamelContext();
BasicConfigurator.configure();
camelContext.addRoutes(new RouteBuilder() {
public void configure() throws Exception {
String publicKeyFileName = "file:C:\LocalData\Keys\pgp_public.asc";
String keyUserid = " ";
from("file:C:\Test\Test\IN")
.log("file received")
.marshal().pgp(publicKeyFileName, keyUserid)
.to("file:C\Test\Test\OUT");
}
});
camelContext.start();
Thread.sleep(30000);
camelContext.stop();
}
我注意到路由正在启动,使用 in 文件夹中的文件然后失败,但出现以下异常:
Caused by: java.lang.NoSuchMethodError: org.bouncycastle.openpgp.PGPPublicKeyRingCollection.<init>(Ljava/io/InputStream;)V
at org.apache.camel.converter.crypto.PGPDataFormatUtil.findPublicKey(PGPDataFormatUtil.java:64)
at org.apache.camel.converter.crypto.PGPDataFormatUtil.findPublicKey(PGPDataFormatUtil.java:54)
at org.apache.camel.converter.crypto.PGPDataFormat.marshal(PGPDataFormat.java:64)
at org.apache.camel.processor.MarshalProcessor.process(MarshalProcessor.java:59)
at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
这是 Camel 文档中的错误,请在此处找到详细信息:
https://jira.apache.org/jira/browse/CAMEL-12574
我正在尝试使用 PGP Encryption/Decryption 方法和 Apache Camel 来加密和解密文件。
此外,我还安装了 Kleopatra 以生成私钥和 public 密钥。使用 Kleopatra 我已经成功地生成了我的密钥。密钥和 public 密钥在“.asc”扩展名中。
下面是我用来加密文件的一段代码
import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
public class PGPENC {
public static void main(String[] args) throws Exception {
CamelContext camelContext = new DefaultCamelContext();
camelContext.addRoutes(new RouteBuilder() {
public void configure() throws Exception {
String publicKeyFileName = "file:C:\Users\karthick\Desktop\PGP\PGP\Public_Key.asc";
String keyUserid = "Karthick Sambanghi <karthick88it@gmail.com>";
from("file:C:\Users\ITSS\karthick\PGP\PGP\IN?noop=true;delete=true").marshal()
.pgp(publicKeyFileName, keyUserid).to("file:C:\Users\ITSS\Desktop\PGP\PGP\OUT");
}
});
camelContext.start();
Thread.sleep(5000);
camelContext.stop();
}
}
此处程序成功执行,没有任何错误,但文件未在 OUT 文件夹中加密。无论如何要检查 "camelContext" return 语句是成功还是失败?
以下是当前用于执行程序的库
bcpg-jdk15on-1.52
bcprov-ext-jdk15on-1.57
camel-context-2.22.1
camel-core-2.22.1
camel-crypto-2.19.1
slf4j-api-1.7.25
slf4j-nop-1.7.25
您可以通过在您的程序中添加 org.apache.log4j.BasicConfigurator.configure()
.
使用它您可以验证路由是否启动并使用了文件。 所以通过添加一些日志来执行你的程序:
CamelContext camelContext = new DefaultCamelContext();
BasicConfigurator.configure();
camelContext.addRoutes(new RouteBuilder() {
public void configure() throws Exception {
String publicKeyFileName = "file:C:\LocalData\Keys\pgp_public.asc";
String keyUserid = " ";
from("file:C:\Test\Test\IN")
.log("file received")
.marshal().pgp(publicKeyFileName, keyUserid)
.to("file:C\Test\Test\OUT");
}
});
camelContext.start();
Thread.sleep(30000);
camelContext.stop();
}
我注意到路由正在启动,使用 in 文件夹中的文件然后失败,但出现以下异常:
Caused by: java.lang.NoSuchMethodError: org.bouncycastle.openpgp.PGPPublicKeyRingCollection.<init>(Ljava/io/InputStream;)V
at org.apache.camel.converter.crypto.PGPDataFormatUtil.findPublicKey(PGPDataFormatUtil.java:64)
at org.apache.camel.converter.crypto.PGPDataFormatUtil.findPublicKey(PGPDataFormatUtil.java:54)
at org.apache.camel.converter.crypto.PGPDataFormat.marshal(PGPDataFormat.java:64)
at org.apache.camel.processor.MarshalProcessor.process(MarshalProcessor.java:59)
at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
这是 Camel 文档中的错误,请在此处找到详细信息: https://jira.apache.org/jira/browse/CAMEL-12574