Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.IO;
- namespace Task04_1
- {
- class Program
- {
- static char sep = Path.DirectorySeparatorChar;//Разделительный символ.
- static Random rnd = new Random();//Генератор случайных чисел.
- /// <summary>
- /// Метод, шифрующий строку str с заданным ключом key.
- /// </summary>
- /// <param name="str">Строка, которую необходимо зашифровать.</param>
- /// <param name="key">Ключ шифрования.</param>
- /// <param name="result">Переменная для сохранения зашифрованной строки.</param>
- static void Encrypt(string str, ushort key, out string result)
- {
- result = "";
- for (uint i = 0; i < str.Length; i++) result += (char)(str[(int)i] ^ key);
- }
- static void Main()
- {
- do
- {
- Console.WriteLine("Введите строку, которую хотите зашифровать: ");
- string inputStr = Console.ReadLine();//Считываем строку для шифрованиия.
- ushort key = default;//Ключ шифрования, получаемый случайно или из файла.
- byte[] binaryKey;//Массив для ввода ключа из бинарного файла.
- string filePath = $"..{sep}..{sep}..{sep}key.bin";//Имя файла.
- if (!File.Exists(filePath))
- {
- key = (ushort)rnd.Next(); //Создаём случайный ключ, если файла не существует.
- Encrypt(inputStr, key, out var result); //Шифруем строку inputStr.
- Console.WriteLine(result); //Выводим зашифрованную строку на консоль.
- }
- else
- { //Проверка файла на сущестование.
- try
- { //Пробуем считать ключ из бинарного файла.
- binaryKey = File.ReadAllBytes(filePath);
- key = BitConverter.ToUInt16(binaryKey, 0);
- }
- catch (IOException)
- {
- Console.WriteLine($"Ошибка чтения ключа из файла.");
- }
- catch (System.Security.SecurityException ex)
- {
- Console.WriteLine($"Произошла ошибка безопасности: {ex.Message}");
- }
- catch (Exception ex)
- {
- Console.WriteLine($"Что-то пошло не так: {ex.Message}");
- }
- }
- /* else key = (ushort)rnd.Next(); //Создаём случайный ключ, если файла не существует.
- Encrypt(inputStr, key, out var result); //Шифруем строку inputStr.
- Console.WriteLine(result); //Выводим зашифрованную строку на консоль. */
- Console.WriteLine("Программа завершила выполнение.\n" +
- "Для закрытия программы нажмите \"Escape\"\n" +
- "Для продолжения – любую другую клавишу.");
- } while (Console.ReadKey().Key != ConsoleKey.Escape);
- }//Main()
- }//Program
- }//Task04_1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement