An enhanced cipher component that maintains a log file
/* C#: The Complete Reference by Herbert Schildt Publisher: Osborne/McGraw-Hill (March 8, 2002) ISBN: 0072134852 */ // An enhanced cipher component that maintains a log file. using CipherLib; // import CipherComp's namespace using System; using System.ComponentModel; using System.IO; namespace CipherLib { // An Cipher component that maintains a log file. class CipherComp : Component { static int useID = 0; int id; // instance id bool isDisposed; // true if component is disposed. FileStream log; // Constructor public CipherComp() { isDisposed = false; // component not disposed try { log = new FileStream("CipherLog" + useID, FileMode.Create); id = useID; useID++; } catch (FileNotFoundException exc) { Console.WriteLine(exc); log = null; } } // Destructor ~CipherComp() { Console.WriteLine("Destructor for component " + id); Dispose(false); } // Encode the file. Return and store result. public string Encode(string msg) { string temp = ""; for(int i=0;i < msg.Length; i++) temp += (char) (msg[i] + 1); // Store in log file. for(int i=0; i < temp.Length; i++) log.WriteByte((byte) temp[i]); return temp; } // Decode the message. Return and store result. public string Decode(string msg) { string temp = ""; for(int i=0; i < msg.Length; i++) temp += (char) (msg[i] - 1); // Store in log file. for(int i=0; i < temp.Length; i++) log.WriteByte((byte) temp[i]); return temp; } protected override void Dispose(bool dispAll) { Console.WriteLine("Dispose(" + dispAll + ") for component " + id); if(!isDisposed) { if(dispAll) { Console.WriteLine("Closing file for " + "component " + id); log.Close(); // close encoded file isDisposed = true; } // no unmanaged resources to release base.Dispose(dispAll); } } } } // Another client that uses CipherComp. public class CipherCompClient1 { public static void Main() { CipherComp cc = new CipherComp(); string text = "Testing"; string ciphertext = cc.Encode(text); Console.WriteLine(ciphertext); string plaintext = cc.Decode(ciphertext); Console.WriteLine(plaintext); text = "Components are powerful."; ciphertext = cc.Encode(text); Console.WriteLine(ciphertext); plaintext = cc.Decode(ciphertext); Console.WriteLine(plaintext); cc.Dispose(); // free resources } }