Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.35 KB | None | 0 0
  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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement