Bouncycastle PGP解密期间的PartialInputStream
|
我正在尝试解密刚使用bouncycastle加密的文件,但是我收到了此异常:
Premature end of stream in PartialInputStream
我使用的是bouncycastle的示例代码,并且没有进行任何更改。
使用以下代码进行加密时,我得到了这个:
private static byte[] EncryptFile(byte[] clearData, string fileName, PgpPublicKey encKey, bool withIntegrityCheck)
{
MemoryStream encOut = new MemoryStream();
try
{
MemoryStream bOut = new MemoryStream();
PgpCompressedDataGenerator comData = new PgpCompressedDataGenerator( CompressionAlgorithmTag.Zip );
//PgpUtilities.WriteFileToLiteralData(
// comData.Open(bOut),
// PgpLiteralData.Binary,
// new FileInfo(fileName));
Stream cos = comData.Open(bOut);
PgpLiteralDataGenerator lData = new PgpLiteralDataGenerator();
Stream pOut = lData.Open(
cos,
PgpLiteralData.Binary,
fileName,
clearData.Length,
DateTime.UtcNow
);
lData.Close();
comData.Close();
PgpEncryptedDataGenerator cPk = new PgpEncryptedDataGenerator( SymmetricKeyAlgorithmTag.Cast5, withIntegrityCheck, new SecureRandom() );
cPk.AddMethod(encKey);
byte[] bytes = bOut.ToArray();
Stream os = encOut;
Stream cOut = cPk.Open(os, bytes.Length);
cOut.Write(bytes, 0, bytes.Length);
cOut.Close();
encOut.Close();
}
catch (PgpException e)
{
Console.Error.WriteLine(e);
Exception underlyingException = e.InnerException;
if (underlyingException != null)
{
Console.Error.WriteLine(underlyingException.Message);
Console.Error.WriteLine(underlyingException.StackTrace);
}
}
return encOut.ToArray();
}
我认为这与PgpLiteralDataGenerator
有关。
但是我需要使用它,因为我想从字节数组而不是文件中加密数据。还有其他方法吗?
没有找到相关结果
已邀请:
2 个回复
翁茄口霉氖
攫怂绵十
我的解决方案是将流复制到新的.net Stream对象 像
。然后从memoryStream对象读取。 因此,我的基本流类型与
流类型无关。