decrypting from memory stream

  • Thread starter Thread starter JW
  • Start date Start date
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
 
Hi JW,

The common cause to your problem is that you probably don't call
FlushFinalBlock() method before closing CryptoStream when writting data.
 
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.
 
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?
 
Back
Top