CryptoStream myCryptoStream = new CryptoStream(myMemoryStream,cryptoKey.CreateDecryptor(), CryptoStreamMode.Read);
MyMemoryStream has a length of 28, but querying the length of myCryptoStream shows string myPlainText = myStreamReader.ReadToEnd();
With an "invalid Length" error.private void WriteUserLogon() { //create a store stream IsolatedStorageFile myStorage = IsolatedStorageFile.GetUserStoreForAssembly(); IsolatedStorageFileStream userStream = new IsolatedStorageFileStream("Logon.dat", System.IO.FileMode.OpenOrCreate); String userPassword_Encrypted = Cryptography.EncryptString(txtPassword.Text); StreamWriter userLogonStream = new StreamWriter(userStream); userLogonStream.WriteLine("<UserName>" + txtUserName.Text + "</UserName>"); userLogonStream.WriteLine("<Password>" + userPassword_Encrypted + "</Password>"); userLogonStream.Close(); userStream.Close(); myStorage.Close(); private void ReadUserLogon() { //create a store stream IsolatedStorageFile myStorage = IsolatedStorageFile.GetUserStoreForAssembly(); IsolatedStorageFileStream userStream = new IsolatedStorageFileStream("Logon.dat", System.IO.FileMode.OpenOrCreate); StreamReader userLogonStream = new StreamReader(userStream); String logonData = userLogonStream.ReadToEnd(); userLogonStream.Close(); userStream.Close(); myStorage.Close(); if(logonData.IndexOf("UserName")>0) { int startPos = logonData.IndexOf("<UserName>")+10; int endPos = logonData.IndexOf("</UserName>"); String userName = logonData.Substring(startPos , endPos-startPos); txtUserName.Text = userName; } if (logonData.IndexOf("Password") > 0) { int startPos = logonData.IndexOf("<Password>") + 10; int endPos = logonData.IndexOf("</Password>"); String userPassword_Encrypted = logonData.Substring(startPos, endPos - startPos); String userPassword = Cryptography.DecryptString(userPassword_Encrypted); txtPassword.Text = userPassword; } } public static byte[] Encrypt(string myPlainText) { MemoryStream myMemoryStream = new MemoryStream(); DESCryptoServiceProvider cryptoKey = new DESCryptoServiceProvider(); CryptoStream myCryptoStream = new CryptoStream(myMemoryStream, cryptoKey.CreateEncryptor(), CryptoStreamMode.Write); StreamWriter myStreamWriter = new StreamWriter(myCryptoStream); myStreamWriter.WriteLine(myPlainText); myStreamWriter.Close(); myCryptoStream.Close(); byte[] myBuffer = myMemoryStream.ToArray(); myMemoryStream.Close(); return myBuffer; } public static string Decrypt(byte[] myCryptoText) { MemoryStream myMemoryStream = new MemoryStream(myCryptoText); DESCryptoServiceProvider cryptoKey = new DESCryptoServiceProvider(); CryptoStream myCryptoStream = new CryptoStream(myMemoryStream, cryptoKey.CreateDecryptor(), CryptoStreamMode.Read); StreamReader myStreamReader = new StreamReader(myCryptoStream); //Next Line Fails string myPlainText = myStreamReader.ReadToEnd(); myStreamReader.Close(); myCryptoStream.Close(); myMemoryStream.Close(); return myPlainText; }