using System;
public class Test
{
public static void Main()
{
Test cipher = new Test();
string input = "Hello World";
Console.WriteLine(input);
string enc = cipher.Encrypt(input, 5);
Console.WriteLine(enc);
string dec = cipher.Decrypt(enc, 5);
Console.WriteLine(dec);
}
public string removeSpaces(string plainIn)
{
return plainIn.Replace(" ", string.Empty);
}
public string reverse(string plainIn)
{
char[] charArray = plainIn.ToCharArray();
Array.Reverse(charArray);
return new string(charArray);
}
public string toUCase(string strIn)
{
return strIn.ToUpper();
}
private const int LETTERA = (int)'A';
private const int LETTERS = (int)'Z' - LETTERA + 1;
public string shift(string plainIn, int shift)
{// 65=a 90=z in ASCII
string readOut=string.Empty;
char[] charArray;
charArray = plainIn.ToCharArray();
for (int i = 0; i < charArray.Length; i++)
{
//Console.WriteLine("Char {0} is {1} and maps to {2} and shifts to {3}",
// i, charArray[i], (int)charArray[i] - LETTERA,
// (((int)charArray[i] - LETTERA + shift) % LETTERS)
//);
//char c = (char)(LETTERA + (((int)charArray[i] + shift - LETTERA + LETTERS)
// % LETTERS));
//Console.WriteLine("Char {0}", c);
readOut += (char)(LETTERA + (((int)charArray[i] + shift - LETTERA + LETTERS) % LETTERS));
//int Num = Convert.ToInt32(charArray[i]) + shift;
//readOut += Convert.ToChar(Num > 90 ? Num -= 26 : (Num < 65 ? Num += 26: Num));
}
return readOut;
}
//this method will take all of these methods and put them together to encrypt
public string Encrypt(string ReadIn, int Shift)
{
ReadIn = removeSpaces(ReadIn);
ReadIn = reverse(ReadIn);
ReadIn = toUCase(ReadIn);
ReadIn = shift(ReadIn, Shift);
return ReadIn;
}
public string Decrypt(string ReadIn, int amountShift)
{
ReadIn = reverse(ReadIn);// undo the reverse by running the method again
ReadIn = shift(ReadIn, -amountShift);
return ReadIn;
}
}