PartialInputStream pendant Bouncycastle PGP décryptage
Je suis tryng pour décrypter un fichier que j'ai juste chiffré à l'aide de bouncycastle, mais je suis de cette exception:
Premature end of stream in PartialInputStream
Je suis en utilisant le code d'exemple de bouncycastle et n'ai rien changé.
Je reçois ce lorsque j'utilise ce code pour le chiffrement:
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();
}
Je pense qu'il a quelque chose à voir avec la PgpLiteralDataGenerator
.
Mais j'ai besoin de l'utiliser parce que je veux crypter les données à partir d'un tableau d'octets, et non pas à partir d'un fichier. Est-il un autre moyen pour ce faire?
OriginalL'auteur hs2d | 2011-04-14
Vous devez vous connecter pour publier un commentaire.
Quelqu'un qui est struggeling heres un code de travail:
parce que demandeur a choisi son propre réponse..
Où avez-vous obtenu cert.ncp?
OriginalL'auteur hs2d
J'ai eu le même message d'erreur, quand j'ai essayé de lire le "stream".
Une solution pour moi a été de copier le flux vers un nouveau .net objet de Flux de données
comme
MemoryStream
. Et après que lecture de l'objet memoryStream.Donc, mon flux de base type n'a rien à voir avec
Org.BouncyCastle.Bcpg
types de flux.OriginalL'auteur tchimev