我正在寻找一种加密/解密文件/字节数组的方法,而不需要调用压缩输入。要更精确,不要使用像
这样的东西ByteArrayOutputStream bOut = new ByteArrayOutputStream();
PGPCompressedDataGenerator comData = new PGPCompressedDataGenerator(algorithm);
PGPUtil.writeFileToLiteralData(comData.open(bOut), PGPLiteralData.BINARY, new File(fileName));
任何参考,代码示例都超过welecome, 感谢。
答案 0 :(得分:2)
您可以避免在PGP中添加压缩,只需不添加执行此操作的代码即可。为了使您的问题变得合理,我希望您发布一个具有签名/加密+压缩的示例,然后我们可以建议如何删除压缩位。
实际上,最简单的方法可能是设置"未压缩"像这样:
new PGPCompressedDataGenerator(algorithm, CompressionAlgorithmTags.UNCOMPRESSED)
答案 1 :(得分:0)
更简单的方法是选择CompressionAlgorithmTags.UNCOMPRESSED
。如果这样做,则在解密文件时,对象JcaPGPObjectFactory
仍会收到PGPCompressedData
(将被解压缩)而不是PGPLiteralData
。
要直接接收PGPLiteralData
,可以完全避免压缩。
以您的代码为例,您可以编写:
ByteArrayOutputStream bOut = new ByteArrayOutputStream();
PGPUtil.writeFileToLiteralData(bOut, PGPLiteralData.BINARY, new File(fileName));