Pergunta

Estou tentando usar BouncyCastle para criptografar um arquivo usando o PKCS 7 de arquivo padrão.Aqui está o código que eu tenho que gera um arquivo p7m.Quando eu vou para descriptografar o arquivo (usando Confiar a) sou solicitado para a minha senha do armazenamento de chaves, portanto, ele sabe que o arquivo foi criptografado para mim, usando criptografia AES de 128, mas ele não pode descriptografar o corpo do arquivo.Algo tem de estar errado em encriptar.

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);
}

E quando eu tentar descriptografar o arquivo usando BouncyCastle eu recebo esse erro quando eu passar o conteúdo do ficheiro para uma CMSEnveloped Objeto:

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

Alguma idéia o que está acontecendo aqui?

Foi útil?

Solução

Eu usei o EnvelopedCMS classe para fazer isso.

http://msdn.microsoft.com/en-us/library/bb924575(VS.90).aspx

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top