decrypting from memory stream

J

JW

I can encrypt the contents of a memory stream with no problems, however when
decrypting( I'm using the same key an IV ) I get an exception stating bad
data.

I'm at a lost. I'm actually creating a new memory stream, filling it with
the encrypted bytes then trying to read from the crypto stream object. I
have used the same approach encrypting to a file handle and then decrypting
from the same file and it works.



sample: (this same code works with a file stream but not memory stream) what
am I missing?

MemoryStream memStrEnc2 = new MemoryStream(newByte, 0, newByte.Length);

CryptoStream decStream = new CryptoStream(memStrEnc2,
tdes.CreateDecryptor(random, random), CryptoStreamMode.Read);

byte[] memString2 = new Byte[memStrEnc2.Length];

decStream.Read(memString2, 0, 16);

decStream.Close();



Thank you for your time

Josiah
 
M

Miha Markic

Hi JW,

The common cause to your problem is that you probably don't call
FlushFinalBlock() method before closing CryptoStream when writting data.
 
J

Jon Skeet [C# MVP]

The common cause to your problem is that you probably don't call
FlushFinalBlock() method before closing CryptoStream when writting data.

That shouldn't make any difference, as I believe CryptoStream.Close
flushes the final block anyway.
 
J

Jon Skeet [C# MVP]

JW said:
sample: (this same code works with a file stream but not memory stream) what
am I missing?

MemoryStream memStrEnc2 = new MemoryStream(newByte, 0, newByte.Length);

CryptoStream decStream = new CryptoStream(memStrEnc2,
tdes.CreateDecryptor(random, random), CryptoStreamMode.Read);

byte[] memString2 = new Byte[memStrEnc2.Length];

decStream.Read(memString2, 0, 16);

decStream.Close();

You're still using Stream.Read the wrong way, as you were before. See
http://www.pobox.com/~skeet/csharp/readbinary.html

That shouldn't give that kind of exception though. Again, could you
come up with a short but complete program which demonstrates the
problem?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top