Шифрование/дешифрование решеткой (метод Кардано) - C#
Формулировка задачи:
Подскажите пожалуйста, как сделать обратное действие (DeCrypt), расшифровать, т.е. собрать все 1 и выложить их в строку, должно получится слово привет!
Это шифр Кардано, шифрование происходит за счет замены нужных букв(word) в "невинном тексте"(input). Нужные буквы 1, остальные 0. Берем первое вхождение строки word и пробегаемся по строке input до первого вхождения нужного элемента.
static void Main(string[] args) { string word = "привет"; string input = "ПеРгамент клеопатры Из египта отраВлЕн Токсином!"; Console.WriteLine("Шифруемое слово: " + word + "\n"); Console.WriteLine("Криптограмма: " + input + "\n"); input = input.ToLower(); word = word.ToLower(); Console.WriteLine("Ключ криптограммы: " + Crypt(word,input)); Console.ReadLine(); } static string Crypt(string word, string input) { var sb = new StringBuilder(); int i = 0, j = 0; for (; i < word.Length; i++) { for (; j < input.Length; j++) { if (word[i] == input[j]) { sb.Append("1"); j++; break; } sb.Append("0"); } } for (; j < input.Length; j++) sb.Append("0"); return sb.ToString(); } public static void DeCrypt() { // прямой обход решетки for (int i = 0; i < строка.Length; i++) { if (Convert.ToString(строка[i]) == "1") { Console.Write(строка[i]); } } Console.WriteLine(""); }
Решение задачи: «Шифрование/дешифрование решеткой (метод Кардано)»
textual
Листинг программы
static void DeCrypt(string input, string key) { for (int i = 0; i < key.Length; i++) { if (Convert.ToString(key[i]) == "1") { Console.Write(input[i]); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д