Encryption and Decryption Problems
-
I'm using the RijndaelManaged class to encrypt data. One of the things I want to encrypt is a log file that records the usernames of the people who log on to my application. When I write a single line to a file, I'm able to decrypt the data without a problem, but when I log onto the program again, thereby encrypting a second username to the file, I'm unable to successfully decrypt both lines of data. Only part of the second line is decrypted successfully. Does anyone have any suggestions/comments about why I'm encountering this problem?
-
I'm using the RijndaelManaged class to encrypt data. One of the things I want to encrypt is a log file that records the usernames of the people who log on to my application. When I write a single line to a file, I'm able to decrypt the data without a problem, but when I log onto the program again, thereby encrypting a second username to the file, I'm unable to successfully decrypt both lines of data. Only part of the second line is decrypted successfully. Does anyone have any suggestions/comments about why I'm encountering this problem?
In general, debugging a problem for you requires us to view the code you are using. We may not always be able to help, but seeing your code greatly increases the possibility. John
"You said a whole sentence with no words in it, and I understood you!" -- my wife as she cries about slowly becoming a geek. -
In general, debugging a problem for you requires us to view the code you are using. We may not always be able to help, but seeing your code greatly increases the possibility. John
"You said a whole sentence with no words in it, and I understood you!" -- my wife as she cries about slowly becoming a geek.Okay, here's the code I'm using to encrypt: public void EncryptData() { FileStream fs=null; if(File.Exists(Directory.GetCurrentDirectory() + "\\c#.ini") == false) { fs=new FileStream(Directory.GetCurrentDirectory() + "\\c#.ini", System.IO.FileMode.CreateNew); } else { fs=new FileStream(Directory.GetCurrentDirectory() + "\\c#.ini", System.IO.FileMode.Append); } byte[] Key = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16}; byte[] IV = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16}; RijndaelManaged RMCrypto=new RijndaelManaged(); System.Security.Cryptography.CryptoStream cryption=new CryptoStream(fs, RMCrypto.CreateEncryptor(Key, IV), CryptoStreamMode.Write); StreamWriter tnWriter2 = new StreamWriter(cryption, System.Text.Encoding.Unicode); tnWriter2.WriteLine(log); tnWriter2.Close(); fs.Close(); } And here's the code for Decrypting: private void DecryptDataLog() { FileStream read=new FileStream(currPath + "\\c#.ini", System.IO.FileMode.OpenOrCreate); byte[] Key = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16}; byte[] IV = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16}; RijndaelManaged RMCrypto=new RijndaelManaged(); System.Security.Cryptography.CryptoStream cryption=new CryptoStream(read, RMCrypto.CreateDecryptor(Key, IV), CryptoStreamMode.Read); StreamReader tnReader = new StreamReader(cryption, System.Text.Encoding.Unicode); this.textBox1.Text=tnReader.ReadToEnd(); tnReader.Close(); read.Close(); } When the file I'm writing to has more than one line, the first few characters of the 2nd, 3rd, etc lines of encrypted text show up as gibberish, while the rest of the line is OK.
-
Okay, here's the code I'm using to encrypt: public void EncryptData() { FileStream fs=null; if(File.Exists(Directory.GetCurrentDirectory() + "\\c#.ini") == false) { fs=new FileStream(Directory.GetCurrentDirectory() + "\\c#.ini", System.IO.FileMode.CreateNew); } else { fs=new FileStream(Directory.GetCurrentDirectory() + "\\c#.ini", System.IO.FileMode.Append); } byte[] Key = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16}; byte[] IV = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16}; RijndaelManaged RMCrypto=new RijndaelManaged(); System.Security.Cryptography.CryptoStream cryption=new CryptoStream(fs, RMCrypto.CreateEncryptor(Key, IV), CryptoStreamMode.Write); StreamWriter tnWriter2 = new StreamWriter(cryption, System.Text.Encoding.Unicode); tnWriter2.WriteLine(log); tnWriter2.Close(); fs.Close(); } And here's the code for Decrypting: private void DecryptDataLog() { FileStream read=new FileStream(currPath + "\\c#.ini", System.IO.FileMode.OpenOrCreate); byte[] Key = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16}; byte[] IV = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16}; RijndaelManaged RMCrypto=new RijndaelManaged(); System.Security.Cryptography.CryptoStream cryption=new CryptoStream(read, RMCrypto.CreateDecryptor(Key, IV), CryptoStreamMode.Read); StreamReader tnReader = new StreamReader(cryption, System.Text.Encoding.Unicode); this.textBox1.Text=tnReader.ReadToEnd(); tnReader.Close(); read.Close(); } When the file I'm writing to has more than one line, the first few characters of the 2nd, 3rd, etc lines of encrypted text show up as gibberish, while the rest of the line is OK.
Do you write those lines in a separate step from the code listed, or does the "log" variable have multiple lines in it? John
"You said a whole sentence with no words in it, and I understood you!" -- my wife as she cries about slowly becoming a geek. -
Do you write those lines in a separate step from the code listed, or does the "log" variable have multiple lines in it? John
"You said a whole sentence with no words in it, and I understood you!" -- my wife as she cries about slowly becoming a geek.The log variable is simply this: log=this.txtBxUsername.Text + ", " + DateTime.Now; I want only to record the username and the time the user logged on. administrator, 1/16/2006 10:55:37 AM တတတတတတတတ襢⭺鉳䀗霳ꇳtrator, 1/16/2006 10:55:48 AM တတတတတတတတ垵쌂멨蛫륢trator, 1/16/2006 10:56:02 AM တတတတတတတတ뙩鲂팒ᬵ밞拑䔏⎗trator, 1/16/2006 10:56:15 AM This is an example of the output I receive.
-
The log variable is simply this: log=this.txtBxUsername.Text + ", " + DateTime.Now; I want only to record the username and the time the user logged on. administrator, 1/16/2006 10:55:37 AM တတတတတတတတ襢⭺鉳䀗霳ꇳtrator, 1/16/2006 10:55:48 AM တတတတတတတတ垵쌂멨蛫륢trator, 1/16/2006 10:56:02 AM တတတတတတတတ뙩鲂팒ᬵ밞拑䔏⎗trator, 1/16/2006 10:56:15 AM This is an example of the output I receive.
How is it that you get a multi-line file from code that only writes one line? [edit]Oops, just looked back and saw the APPEND option when you open the file. That's the problem. You need to write the entire file each time if you plan on encrypting and decrypting it. It appears that you accidentally read some of it because you are using the same key and initialization vector each time.[/edit] John
"You said a whole sentence with no words in it, and I understood you!" -- my wife as she cries about slowly becoming a geek. -- modified at 14:20 Monday 16th January, 2006 -
The log variable is simply this: log=this.txtBxUsername.Text + ", " + DateTime.Now; I want only to record the username and the time the user logged on. administrator, 1/16/2006 10:55:37 AM တတတတတတတတ襢⭺鉳䀗霳ꇳtrator, 1/16/2006 10:55:48 AM တတတတတတတတ垵쌂멨蛫륢trator, 1/16/2006 10:56:02 AM တတတတတတတတ뙩鲂팒ᬵ밞拑䔏⎗trator, 1/16/2006 10:56:15 AM This is an example of the output I receive.
-
How is it that you get a multi-line file from code that only writes one line? [edit]Oops, just looked back and saw the APPEND option when you open the file. That's the problem. You need to write the entire file each time if you plan on encrypting and decrypting it. It appears that you accidentally read some of it because you are using the same key and initialization vector each time.[/edit] John
"You said a whole sentence with no words in it, and I understood you!" -- my wife as she cries about slowly becoming a geek. -- modified at 14:20 Monday 16th January, 2006The file is written to every time a user logs on to the application. I'm appending the new user information to the document each time the user logs on. So, the WriteLine is performed once each time through the application, but the file is appended the next time through.
-
The file is written to every time a user logs on to the application. I'm appending the new user information to the document each time the user logs on. So, the WriteLine is performed once each time through the application, but the file is appended the next time through.
I just modified the previous post to comment on this behavior. Check it out. John
"You said a whole sentence with no words in it, and I understood you!" -- my wife as she cries about slowly becoming a geek. -
How is it that you get a multi-line file from code that only writes one line? [edit]Oops, just looked back and saw the APPEND option when you open the file. That's the problem. You need to write the entire file each time if you plan on encrypting and decrypting it. It appears that you accidentally read some of it because you are using the same key and initialization vector each time.[/edit] John
"You said a whole sentence with no words in it, and I understood you!" -- my wife as she cries about slowly becoming a geek. -- modified at 14:20 Monday 16th January, 2006So, would you suggest I read the file first and append the content to it the result of that read, then encrypt the whole thing? How are user logon records stored typically?
-
So, would you suggest I read the file first and append the content to it the result of that read, then encrypt the whole thing? How are user logon records stored typically?
thepolishguy wrote:
So, would you suggest I read the file first and append the content to it the result of that read, then encrypt the whole thing?
Yep.
thepolishguy wrote:
How are user logon records stored typically?
I'm not sure there is a "typical" way. You might consider using a custom event log in Windows. John
"You said a whole sentence with no words in it, and I understood you!" -- my wife as she cries about slowly becoming a geek.