public CaesarsCipherDecryptor(TextMessage msg, int key)
 {
     msg.Message = msg.Message.ToUpper();
     this.Message = "";
     for (int i = 0; i < msg.Message.Length; i++)
     {
         int nextChar = msg.Message[i] - 'A';
         nextChar = (nextChar - key) % 26;
         this.Message += (char)(nextChar + 'A');
     }
 }
        static void Main(string[] args)
        {
            Console.Write("Enter String: ");
            TextMessage message = new TextMessage();
            message.Message = Console.ReadLine();

            TextMessage caesarsCipherEncryptor = new CaesarsCipherEncryptor(message, 7);
            Console.WriteLine("Encrypting message: " + caesarsCipherEncryptor.Message);

            TextMessage caesarsCipherDecryptor = new CaesarsCipherDecryptor(caesarsCipherEncryptor, 7);
            Console.WriteLine("Decrypting message: " + caesarsCipherDecryptor.Message);

            Console.ReadLine();
        }
        public CaesarsCipherEncryptor(TextMessage msg, int key)
        {
            // From This is CS 50. Harvard College Fall 2009 problem set 2
            // Caesar's Cipher
            // If p is some plaintext (i.e., an unencrypted message), pi is the i th character in p,
            // and k is a key (i.e., a non-negative integer), then each letter, ci, in the ciphertext, c, is computed
            // as:
            // ci = (pi + k) % 26

            msg.Message = msg.Message.ToUpper();
            this.Message = "";
            for (int i = 0; i < msg.Message.Length; i++)
            {
                int nextChar = msg.Message[i] - 'A';
                nextChar = (nextChar + key) % 26;
                this.Message += (char)(nextChar + 'A');
            }
        }