gpt4 book ai didi

java - Camel 中的解密和压缩问题

转载 作者:行者123 更新时间:2023-12-01 11:53:08 26 4
gpt4 key购买 nike

问题

我有一个 Camel 路由,可以读取 4 个 xml 文件并使用 Camel 加密对它们进行加密。我有另一条路线可以获取这些加密文件,解密并将它们保存到文件系统。它工作得非常好。

但是,我需要在单个 Camel 路由中解密和压缩这些文件。我还没能做到这一点。任何帮助将不胜感激。

异常

Caused by: java.io.IOException: Attempted to read a '1347093252' byte initialization vector from inputStream but only '6016' bytes were retrieved
at org.apache.camel.converter.crypto.CryptoDataFormat.getInlinedInitializationVector(CryptoDataFormat.java:193)

WARN AggregateProcessor - Error processing aggregated exchange. Exchange[Message: [Body is file based: /tmp/camel-tmp-342373/camel4393278949787760082.zip]]. Caused by: [java.io.IOException - Error reading initialization vector from encrypted stream]
java.io.IOException: Error reading initialization vector from encrypted stream
at org.apache.camel.converter.crypto.CryptoDataFormat.getInlinedInitializationVector(CryptoDataFormat.java:197)
at org.apache.camel.converter.crypto.CryptoDataFormat.unmarshal(CryptoDataFormat.java:152)
at org.apache.camel.processor.UnmarshalProcessor.process(UnmarshalProcessor.java:65)
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398)
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)
at org.apache.camel.processor.Pipeline.process(Pipeline.java:118)

路线

<camel:crypto id="cry" keyRef="secretKey" algorithm="AES/CBC/PKCS5Padding" initVectorRef="iv" inline="true" 
shouldAppendHMAC="false" />

<camel:route>
<camel:from uri="file:/opt/vipin/abc/dec?include=.*.xml&amp;noop=true" />
<camel:marshal ref="cry" />
<camel:to uri="file:/opt/vipin/abc/enc?doneFileName=test.done" />
</camel:route>

<camel:route>
<camel:from uri="file:/opt/vipin/abc/enc?
include=.*.xml&amp;noop=true&amp;doneFileName=test.done" />
<camel:aggregate strategyRef="zipAggregationStrategy"
completionFromBatchConsumer="true" completionSize="4">
<camel:correlationExpression>
<camel:constant>true</camel:constant>
</camel:correlationExpression>
<camel:convertBodyTo type="java.io.File" />
<camel:unmarshal ref="cry" />
<camel:to uri="file:/opt/vipin/abc/dec?fileName=abc.zip" />
</camel:aggregate>
</camel:route>

最佳答案

我目前正在维护您过去使用过的应用程序。有时我仍然会看到上述错误。当我用谷歌搜索错误时,这是​​我在网络上找到的唯一帖子:)世界很小!

我认为这个问题是由于使用不同的Java Keystore来解密文件引起的。例如我已在 JVM 中加密了文件,该文件具有使用证书 Cert1 的 Keystore 1 。然后尝试在不同的 JVM 中解密它,该 JVM 具有 keystore 2 和同名的不同证书:Cert1。即证书名称相同但 key 不同。

在这种情况下,JVM 尝试使用“Cert1”加载和解密,但无法执行此操作。这就是 header 中的字节数与正文中的字节数不相等的原因。在这种情况下,我期望更多合适的错误,我同意上述错误具有误导性。

希望这能消除一些困惑!

关于java - Camel 中的解密和压缩问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28632377/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com