Hello all and Happy Holidays!

I am working on a purely academic project trying to get ready for
taking my 70-536 MS cert test. The subject if security and encryption.
As a way of reinforcing the encryption concept in my mind I have set
out creating a library project for encrypting objects. I was hoping to
create one static encrypt method that takes a System.Object, string
key and string Vector Initialization and returns that object
encrypted. I can do this easily just using strings but, when I make
the method accept a Object I have problems.

This is the main 'Encrypt' method:

public static object Encrypt(Object itemToEncrypt, string key, string
vi)
        {
            if (itemToEncrypt == null)
            {
                throw new ArgumentNullException
                       ("The item which needs to be encrypted can not
be null.");
            }
            byte[] keyBytes = ASCIIEncoding.ASCII.GetBytes(key);
            byte[] viBytes = ASCIIEncoding.ASCII.GetBytes(vi);
            DESCryptoServiceProvider cryptoProvider = new
DESCryptoServiceProvider();
            MemoryStream memoryStream = new MemoryStream();
            CryptoStream cryptoStream = new CryptoStream(memoryStream,
                cryptoProvider.CreateEncryptor(keyBytes, viBytes),
CryptoStreamMode.Write);
            StreamWriter writer = new StreamWriter(cryptoStream);
            writer.Write(itemToEncrypt);
            cryptoStream.FlushFinalBlock();
            writer.Flush();
            return HelperMethods.ByteArrayToObject
(memoryStream.GetBuffer());
        }

The problem happens when I call the Helper Method ByteArrayToObject:

       public static Object ByteArrayToObject(byte[] arrBytes)
        {
            MemoryStream memStream = new MemoryStream();
            BinaryFormatter binForm = new BinaryFormatter();
            memStream.Write(arrBytes, 0, arrBytes.Length);
            memStream.Seek(0, SeekOrigin.Begin);
            memStream.Flush();
            memStream.Position = 0;
            Object obj = binForm.Deserialize(memStream); <===
            return obj;
        }

Where the binForm.Deserialize method is called (Arrow to right) I get
the following error:

{"Binary stream '0' does not contain a valid BinaryHeader. Possible
causes are invalid stream or object version change between
serialization and deserialization."}

While I see explanations of this error all over, none of the
suggestions have helped solve this problem.

Please forgive me in advance if I am missing something obvious.
However, any and all suggestions would be greatly appreciated.

Best regards,

rbr

Reply via email to