为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Apache Camel 进行 PGP 加密

使用 Apache Camel 进行 PGP 加密

忽然笑 2023-06-14 10:51:28
我正在尝试使用 Apache Camel 的 PGP 加密/解密方法来加密和解密文件。此外,我还安装了Kleopatra来生成私钥和公钥。使用 Kleopatra 我已经成功地生成了我的密钥。密钥和公钥以“.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”返回语句是成功还是失败?以下是当前用于执行程序的库bcpg-jdk15on-1.52bcprov-ext-jdk15on-1.57camel-context-2.22.1camel-core-2.22.1camel-crypto-2.19.1slf4j-api-1.7.25slf4j-nop-1.7.25
查看完整描述

1 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

您可以通过在您的程序中添加来在控制台中启用骆驼日志记录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)


查看完整回答
反对 回复 2023-06-14
  • 1 回答
  • 0 关注
  • 124 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信