SHARE
TWEET

Untitled

a guest Oct 22nd, 2019 70 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.IO;
  3.  
  4. namespace Task04_1
  5. {
  6.     class Program
  7.     {
  8.         static char sep = Path.DirectorySeparatorChar;//Разделительный символ.
  9.         static Random rnd = new Random();//Генератор случайных чисел.
  10.  
  11.  
  12.  
  13.         /// <summary>
  14.         /// Метод, шифрующий строку str с заданным ключом key.
  15.         /// </summary>
  16.         /// <param name="str">Строка, которую необходимо зашифровать.</param>
  17.         /// <param name="key">Ключ шифрования.</param>
  18.         /// <param name="result">Переменная для сохранения зашифрованной строки.</param>
  19.         static void Encrypt(string str, ushort key, out string result)
  20.         {
  21.             result = "";
  22.             for (uint i = 0; i < str.Length; i++) result += (char)(str[(int)i] ^ key);
  23.         }
  24.  
  25.         static void Main()
  26.         {
  27.             do
  28.             {
  29.                 Console.WriteLine("Введите строку, которую хотите зашифровать: ");
  30.                 string inputStr = Console.ReadLine();//Считываем строку для шифрованиия.
  31.  
  32.                 ushort key = default;//Ключ шифрования, получаемый случайно или из файла.
  33.                 byte[] binaryKey;//Массив для ввода ключа из бинарного файла.
  34.  
  35.                 string filePath = $"..{sep}..{sep}..{sep}key.bin";//Имя файла.
  36.  
  37.                 if (File.Exists(filePath))
  38.                 {//Проверка файла на сущестование.
  39.  
  40.                     try
  41.                     {//Пробуем считать ключ из бинарного файла.
  42.                         binaryKey = File.ReadAllBytes(filePath);
  43.                         key = BitConverter.ToUInt16(binaryKey, 0);
  44.                     }
  45.                     catch (IOException ex)
  46.                     {
  47.                         Console.WriteLine($"Произошла ошибка ввода/вывода: {ex.Message}");
  48.                     }
  49.                     catch (System.Security.SecurityException ex)
  50.                     {
  51.                         Console.WriteLine($"Произошла ошибка безопасности: {ex.Message}");
  52.                     }
  53.                     catch (Exception ex)
  54.                     {
  55.                         Console.WriteLine($"Что-то пошло не так: {ex.Message}");
  56.                     }
  57.                 }
  58.  
  59.                 else key = (ushort)rnd.Next();//Создаём случайный ключ, если файла не существует.
  60.  
  61.                 Encrypt(inputStr, key, out var result);//Шифруем строку inputStr.
  62.                 Console.WriteLine(result);//Выводим зашифрованную строку на консоль.
  63.  
  64.                 Console.WriteLine("Программа завершила выполнение.\n" +
  65.                     "Для закрытия программы нажмите \"Escape\"\n" +
  66.                     "Для продолжения – любую другую клавишу.");
  67.             } while (Console.ReadKey().Key != ConsoleKey.Escape);
  68.         }//Main()
  69.     }//Program
  70. }//Task04_1
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top