/// <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"); }
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; }