首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Apache Camel加密PGP

用Apache Camel加密PGP
EN

Stack Overflow用户
提问于 2019-08-20 12:56:48
回答 1查看 1.8K关注 0票数 0

我正试图使用Apache的PGP加密/解密方法对一个文件进行加密和解密。

此外,我还安装了Kleopatra来生成私钥和公钥。使用Kleopatra,我成功地生成了我的钥匙。密钥和公钥在".asc“扩展中。

下面是我用来加密文件的代码

代码语言:javascript
复制
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();
    }
}

在这里,程序成功地执行,没有任何错误,但文件不是加密在外文件夹。是否要检查"camelContext“返回语句是成功还是失败?

下面是当前用于执行程序的库

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-22 08:49:05

您可以通过添加程序org.apache.log4j.BasicConfigurator.configure()在控制台中启用camel日志记录。

使用它,您可以验证路由是否启动并使用了该文件。因此,通过添加一些日志来执行您的程序:

代码语言:javascript
复制
 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文件夹中消费文件,然后失败,例外情况是:

代码语言:javascript
复制
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)

这是骆驼文档中的一个bug,请在这里找到详细信息:https://jira.apache.org/jira/browse/CAMEL-12574

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57574224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档