猿问

使用 Apache Camel 进行 PGP 加密

我正在尝试使用 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.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


忽然笑
浏览 125回答 1
1回答

动漫人物

您可以通过在您的程序中添加来在控制台中启用骆驼日志记录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)
随时随地看视频慕课网APP

相关分类

Java
我要回答