Пример #1
0
        /// <summary>
        /// Перестановочные шифры с фиксированным периодом
        /// </summary>
        public static void TranspositionCipherTest()
        {
            Console.WriteLine("2. Перестановочные шифры с фиксированным периодом");

            cryptogram = "12345 qwer asdf";
            Console.WriteLine("Текст: " + cryptogram);
            Console.WriteLine("Перестановки: " + new[] { 2, 3, 1, 5, 4 }.ArrayToString(" "));
            transpositionCipher = new TranspositionCipher(new[] { 2, 3, 1, 5, 4 });
            encryptText         = transpositionCipher.Encrypt(cryptogram);
            Console.WriteLine("Зашифрованый текст: " + encryptText);
            decryptText = transpositionCipher.Decrypt(encryptText);
            Console.WriteLine("Расшифрованый текст: " + decryptText);

            //// Одна перестановка
            //Console.WriteLine("Перестановочный шифр с одной перестановкой");
            //Console.WriteLine("Пример работы программы");
            //cryptogram = "My is Dimon!<3 йцукенгш1245";
            //Console.WriteLine("Текст: " + cryptogram);
            //Console.WriteLine("Перестановки: " + new int[] { 4, 3, 7, 1, 5, 6, 2 }.ArrayToString(" "));
            //transpositionCipher = new TranspositionCipher(new int[] { 4, 3, 7, 1, 5, 6, 2 });
            //encryptText = transpositionCipher.Encrypt(cryptogram);
            //Console.WriteLine("Зашифрованый текст: " + encryptText);
            //decryptText = transpositionCipher.Decrypt(encryptText);
            //Console.WriteLine("Расшифрованый текст: " + decryptText);

            //// Упражнение. Расшифруйте, используя ключ (перестановку) 4 3 7 1 5 6 2:
            //Console.WriteLine("\nУпражнение. Расшифруйте, используя ключ (перестановку) 4 3 7 1 5 6 2:");
            //cryptogram = "TMOD_SN_RKOHEELS_EEAP___E___";
            //Console.WriteLine(cryptogram);
            //transpositionCipher = new TranspositionCipher(new int[] { 4, 3, 7, 1, 5, 6, 2 });
            //decryptText = transpositionCipher.Decrypt(cryptogram);
            //Console.WriteLine(decryptText);

            //// Несколько перестановок
            //Console.WriteLine("\nПерестановочный шифр с несколько перестановками");

            //// Упражнение. Расшифруйте криптограмму, полученную двумя последовательными перестановками
            //Console.Write("Упражнение. Расшифруйте криптограмму, полученную двумя последовательными перестановками: ");
            //Console.WriteLine("3 1 5 7 9 4 2 6 8 и 5 4 3 2 1:");
            //cryptogram = "TNNAACO_IL_OMEYC_OONHOT_FN_TEU_Y_R___________";
            ////cryptogram = "My name is Dima! I study at DNU! Oh yeah azaz";
            //Console.WriteLine(cryptogram);
            //transpositionCipher = new TranspositionCipher(new int[] { 3, 1, 5, 7, 9, 4, 2, 6, 8 }, new int[] { 5, 4, 3, 2, 1 });
            //encryptText = transpositionCipher.Encrypt(cryptogram);
            //Console.WriteLine("Зашифрованый текст: " + encryptText);
            //decryptText = transpositionCipher.Decrypt(cryptogram);
            //Console.WriteLine("Расшифрованый текст: " + decryptText);

            Console.WriteLine("\n");
        }
Пример #2
0
        public static string TranspositionCipher(string text, string transpositionArray, CryptType cryptType)
        {
            string result = string.Empty;
            var strArray = transpositionArray.Split(' ');
            var keyArray = new int[strArray.Length];
            for (int i = 0; i < strArray.Length; i++) keyArray[i] = int.Parse(strArray[i]);
            transpositionCipher = new TranspositionCipher(keyArray);
            switch (cryptType)
            {
                case CryptType.Encrypt:
                    result = transpositionCipher.Encrypt(text);
                    break;
                case CryptType.Decrypt:
                    result = transpositionCipher.Decrypt(text);
                    break;
            }

            return result;
        }