Задачи
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