Mega Code Archive

 
Categories / C# / File Stream
 

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     }   }