Пример #1
0
        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);
        }
Пример #2
0
        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());
        }