На нашем сайте Вы сможете найти готовые курсовые и дипломные работы по программированию
Сейчас работаем

Шифр Цезаря C# (WPF)

Задание

Шифр Цезаря — один из древнейших шифров. При шифровании каждый символ заменяется другим, отстоящим от него в алфавите на фиксированное число позиций. Шифр Цезаря можно классифицировать как шифр подстановки, при более узкой классификации — шифр простой замены. Шифр назван в честь римского императора Гая Юлия Цезаря, использовавшего его для секретной переписки. Естественным развитием шифра Цезаря стал шифр Виженера. С точки зрения современного криптоанализа, шифр Цезаря не имеет приемлемой стойкости.

Функционал программы

  • Шифрование строки
  • Дешифрование строки
  • Автоматическое определение языка строки (Английский,Русский)

Фрагмент программного кода

    public partial class MainWindowViewModel
    {
        private const string AlphabetEn = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        private const string AlphabetRu = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";

        [ObservableProperty]
        private Language language = Language.Russian;

        [ObservableProperty]
        private string? text;

        [ObservableProperty]
        public int key = 1;

        [ObservableProperty]
        public int maxKeyValue = AlphabetRu.Length;

        [ObservableProperty]
        private string? result;

        [ObservableProperty]
        private bool method = true;

        partial void OnTextChanged(string? value)
        {
            if (!Regex.IsMatch(value, @"\P{IsBasicLatin}") && !char.IsNumber(value[value.Length-1]) && !char.IsWhiteSpace(value[value.Length - 1]))
            {
                Language = Language.English;
            }
            else if (!Regex.IsMatch(value, @"\P{IsCyrillic}") && !char.IsNumber(value[value.Length - 1]) && !char.IsWhiteSpace(value[value.Length - 1]))
            {
                Language = Language.Russian;
            }

            MaxKeyValue = Language == Language.English ? AlphabetEn.Length : AlphabetRu.Length;
            if(MaxKeyValue < Key)
            {
                Key = MaxKeyValue;
            }
            if(value != null && value.Length > 0 && Key > 0)
            {
                CryptData();
            }    
        }

        partial void OnKeyChanged(int value)
        {
            if (Text != null && Text.Length > 0 && value > 0)
            {
                CryptData();
            }
        }

        partial void OnMethodChanged(bool value)
        {
            if (Text != null && Text.Length > 0 && Key > 0)
            {
                CryptData();
            }
        }

        private void CryptData()
        {
            StringBuilder sb = new StringBuilder();
            var alphabet = Language == Language.English ? AlphabetEn : AlphabetRu;
            foreach (var c in Text)
            {
                var index = alphabet.IndexOf(char.ToUpper(c));
                if(index < 0)
                {
                    sb.Append(c);
                }
                else
                {
                    sb.Append(alphabet[(alphabet.Length + index + (Method == true ? Key : -Key)) % alphabet.Length]);
                }
            }
            Result = sb.ToString();
        }
    }

Скриншот архива с проектом

Содержание архива

  • исходный код программы

Купить 200,00 
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.
Комментарии (0)

/ /

Оставить комментарий

Ты не можешь комментировать

Только зарегистрированые пользователи имеют возможность комментировать работы
Купить

200,00 

Покупается впервые!
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.

Заказать через

Caesar.zip
216041
Оцени работу

рейтинг

Шифр Цезаря C# (WPF)
Шифр Цезаря - программа для шифрования и дешифрирования текста
Категория: Образование
Стоимость: 200,00