Advertisement
parabola949

Shift Cipher with variable length key

Oct 11th, 2013
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.32 KB | None | 0 0
  1. static void Main(string[] args)
  2.         {
  3.             Console.Write("Please enter your message (no spaces, they will be removed): ");
  4.             var message = Console.ReadLine();
  5.             message = message.ToLower().Replace(" ", "");
  6.             Console.Write("Enter your encryption key (number series)");
  7.             var key = Console.ReadLine();
  8.             var encoded = Caesar(message, KeyToArray(key, true), true);
  9.             Console.WriteLine("Your encoded message: " + encoded + "\n\n\n");
  10.  
  11.             Console.WriteLine("Switch sides, your are the receiver.  Encoded message already put in");
  12.  
  13.             Console.Write("Enter your key length:");
  14.             var length = Int32.Parse(s: Console.ReadLine());
  15.             var decode = Caesar(encoded, KeyToArray(encoded.Substring(0,length), false), false);
  16.             Console.Write("Message decoded: " + decode);
  17.            
  18.             Console.Read();
  19.         }
  20.  
  21.         private static int[] KeyToArray(string key, bool Encode)
  22.         {
  23.             var result = new int[key.Length];
  24.             for (var i = 0; i < key.Length; i++)
  25.                 result[i] = Encode ? Int32.Parse(key.Substring(i, 1)) : -(key.Substring(i, 1).ToCharArray()[0] - 96);
  26.             return result;
  27.         }
  28.  
  29.         static string Caesar(string value, int[] shift, bool Encode)
  30.         {
  31.             var s = 0;
  32.             var startIndex = Encode ? 0 : shift.Length;
  33.             var shiftLength = shift.Length;
  34.             char[] buffer = value.ToCharArray(startIndex, value.Length - startIndex);
  35.             var key = "";
  36.            
  37.             for (int x = 0; x < shiftLength; x++)
  38.             {
  39.                 key += (char) (shift[x] + 96);
  40.             }
  41.             for (int i = 0; i < buffer.Length; i++)
  42.             {
  43.                 char letter = buffer[i];
  44.                 letter = (char)(letter + shift[s]);
  45.                 if (letter > 'z')
  46.                 {
  47.                     letter = (char)(letter - 26);
  48.                 }
  49.                 else if (letter < 'a')
  50.                 {
  51.                     letter = (char)(letter + 26);
  52.                 }
  53.                 buffer[i] = letter;
  54.                 s++;
  55.                 if (s == shiftLength)
  56.                     s = 0;
  57.             }
  58.             return (Encode ? key : "") + new string(buffer);
  59.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement