PGP压缩和加密
问题描述:
我使用Bouncy Castles来压缩和加密一些数据。该压缩方法失败并出现空引用异常。下面的方法进行压缩:PGP压缩和加密
private byte[] Compress(byte[] data)
{
using (MemoryStream outStream = new MemoryStream())
{
PgpCompressedDataGenerator pgpCompressedDataGenerator = new PgpCompressedDataGenerator(CompressionAlgorithmTag.Zip);
using (Stream compressedStream = pgpCompressedDataGenerator.Open(outStream))
{
PgpLiteralDataGenerator pgpLiteralDataGenerator = new PgpLiteralDataGenerator();
using (Stream literalDataStream = pgpLiteralDataGenerator.Open(compressedStream, PgpLiteralData.Binary, null, data.Length, DateTime.UtcNow))
{
literalDataStream.Write(data, 0, data.Length);
literalDataStream.Close();
pgpCompressedDataGenerator.Close();
return outStream.ToArray();
}
}
}
}
以下行导致大量引用异常:
pgpLiteralDataGenerator.Open(compressedStream, PgpLiteralData.Binary, null, data.Length, DateTime.UtcNow))
但是我不知道为什么 - 如果我离开了压缩,加密部分按预期工作。我需要另一个库进行压缩,
马克
答
原来空参数调用下面是造成问题:
pgpLiteralDataGenerator.Open(compressedStream, PgpLiteralData.Binary, null, data.Length, DateTime.UtcNow))
此代码是从另一个项目的直接拷贝,但是在那个项目中,Bouncy Castles API被引入了iTextSharp--我假设在实现方面存在细微差别。