2010-07-16 6 views
0

J'essaie d'utiliser BouncyCastle pour crypter un fichier en utilisant la norme de fichier PKCS 7. Voici le code que j'ai qui sort un fichier p7m. Quand je vais déchiffrer le fichier (en utilisant Entrust), je suis invité à entrer le mot de passe de ma clé, donc il sait que le fichier a été crypté avec AES 128, mais il ne peut pas déchiffrer le corps du fichier. Quelque chose doit mal tourner sur le cryptage.BouncyCastle crée un fichier crypté PKCS 7? C#

byte[] fileContent = readFile(filename); 

FileStream outStream = null; 
Stream cryptoStream = null; 
BinaryWriter binWriter = null; 

try 
{ 
    CmsEnvelopedDataStreamGenerator dataGenerator = new CmsEnvelopedDataStreamGenerator(); 
    dataGenerator.AddKeyTransRecipient(cert); //cert is the user's x509cert that i am encrypting for 
    outStream = new FileStream(filename + ".p7m", FileMode.Create); 
    cryptoStream = dataGenerator.Open(outStream, CmsEnvelopedGenerator.Aes128Cbc); 
    binWriter = new BinaryWriter(cryptoStream); 

    binWriter.Write(fileContent); 
} 

Et quand je tente de déchiffrer le fichier à l'aide BouncyCastle je reçois cette erreur lorsque je passe le contenu du fichier à un objet CMSEnveloped:

IOException converting stream to byte array: Attempted to read past the end of the stream. 

Toutes les idées ce qui se passe ici?

Répondre

Questions connexes