Задачи
September 4, 2023
Шифр Цезаря
Шифр Цезаря - это древний алгоритм шифрования, использовавшийся Юлием Цезарем. Он шифрует буквы, сдвигая их на определенное число мест в алфавите. Длину сдвига мы называем ключом. Например, если ключ равен 3, то A становится D, B - E, C - F и так далее.
Чтобы расшифровать сообщение, необходимо сдвинуть зашифрованные буквы в противоположном направлении. Данная программа позволяет пользователю шифровать и расшифровывать сообщения в соответствии с этим алгоритмом.
Реализация
public void Play() { Console.WriteLine(Name); Console.WriteLine(Description); while(true) { Console.WriteLine("\nLet's play !"); CeasarParams? input = getParams(); if (input != null) { Console.WriteLine(processCeasarCipher(input.Message, input.Key, input.Mode)); } Console.WriteLine("Wanna play again?!"); var answer = Console.ReadLine(); if (answer == null || !answer.Contains("y", StringComparison.OrdinalIgnoreCase)) { break; } } Console.WriteLine("Thanks for this game!"); } private string processCeasarCipher(string input, int key, string mode) { var result = new StringBuilder(); foreach (char sym in input) { if (SYMBOLS.Contains(sym)) { int num = SYMBOLS.IndexOf(sym); num = mode == "encrypt" ? num + key : num - key; if (num >= SYMBOLS.Length) { num -= SYMBOLS.Length; } else if (num < 0) { num += SYMBOLS.Length; } result.Append(SYMBOLS[num]); } else { result.Append(sym); } } return result.ToString(); }
Полный код проекта
https://github.com/unilecs/ugames/blob/main/games/CeasarCipher.cs