public void Generic_GenericClassical() { GenericClassicalCipher <int, int, int, char> cipher = new GenericClassicalCipher <int, int, int, char>(); cipher.Alphabet = Utility.EnglishAlphabet(); cipher.DiffuseFunction = diffuse; cipher.InverseDiffuseFunction = diffuse; char[] encrypted = cipher.Encrypt("this is a test".ToUpper().ToCharArray()); string clear = new string(cipher.Decrypt(encrypted)); Assert.AreEqual("THISISATEST", clear); }
public char[] diffuse(char[] block, GenericClassicalCipher <int, int, int, char> cipher) { int alphabetLength = cipher.Alphabet.Length - 1; StringBuilder encrypted = new StringBuilder(); foreach (char c in block) { if (c == ' ') { continue; } encrypted.Append(cipher.Alphabet[alphabetLength - cipher.Alphabet.IndexOf(c)]); } return(encrypted.ToString().ToCharArray()); }