Шифры перестановки - C#
Формулировка задачи:
шифр, преобразования из которого изменяют только порядок следования символов исходного тексто, но не изменяет их самих, называется шифром перестановки (ШП). Суть методов перестановки состоит в том, что входной поток исходного текста делится на блоки, в каждом из которых выполняется перестановка символов.
Искал в форумах, там было сказано о методе перетасовки Фишера-Йейтса. Но использовать не смог.
Например:
(Вывод программы на экран)
Исходный текст:
Информатика
Зашифрованный текст:
рмтфкиоанаИ
Расшифрованный текст:
Информатика
Ключ:
5 6 8 3 10 9 4 7 2 11 1
Решение задачи: «Шифры перестановки»
textual
Листинг программы
public static void Main (string[] args)
{
string key = "5 6 8 3 10 9 4 7 2 11 1";
string text = "рмтфкиоанаИ";
Console.WriteLine (Decode (text, key));
Console.ReadKey ();
}
public static string Decode(string input, string keyStr)
{
if (String.IsNullOrEmpty (keyStr))
{
throw new ArgumentNullException ();
}
if (String.IsNullOrEmpty (input))
{
throw new ArgumentNullException ();
}
int[] key = keyStr.Split().Select(x => Int32.Parse(x)).ToArray();
char[] encodeStr = new char[input.Length];
if (key.Length != input.Length)
{
throw new ArgumentException ();
}
for (int i = 0; i < key.Length; i++)
{
encodeStr [key [i] - 1] = input [i];
}
return new String (encodeStr);
}