Ejemplo n.º 1
0
        private static void Encrypt()
        {
            RSA encoder = new RSA();

            // Открываем файл публичного ключа
            using (var publicKeyFile = new FileStream("PublicKey.txt", FileMode.Open))
            {
                if (publicKeyFile == null)
                {
                    Console.WriteLine("Ошибка. Файл ключа для шифрования не может быть открыт");
                    return;
                }

                byte[] key = new byte[publicKeyFile.Length];
                publicKeyFile.Read(key, 0, key.Length);
                encoder.ExportPublicKey(Encoding.UTF8.GetString(key));
            }

            byte[] inputText;
            byte[] inputTextCode;
            byte[] outputText = null;

            // Открываем файл InputText.txt
            // Если такого нет, вводим текст с клавиатуры и сохраняем в данный файл
            using (var inputFile = new FileStream("InputText.txt", FileMode.OpenOrCreate))
            {
                // Если открытый файл пустой
                if (inputFile.Length == 0)
                {
                    // Вводим текст с клавиатуры
                    Console.WriteLine("Enter text");
                    inputText = Encoding.UTF8.GetBytes(Console.ReadLine().ToLower());
                    inputFile.Write(inputText, 0, inputText.Length);
                }
                else
                {
                    // Считываем текст с файла
                    var array = new byte[inputFile.Length];
                    inputFile.Read(array, 0, array.Length);
                    inputText = Encoding.UTF8.GetBytes(Encoding.UTF8.GetString(array).ToLower());
                }
            }

            inputTextCode = new byte[inputText.Length];

            for (int i = 0; i < inputTextCode.Length; i++)
            {
                inputTextCode[i] = alphabet[Convert.ToChar(inputText[i])];
            }

            outputText = encoder.Encrypt(inputTextCode);

            // Записываем зашифрованный текст в файл EnryptedText.txt
            using (FileStream outputFile = new FileStream("EnryptedText.txt", FileMode.Create))
            {
                if (outputFile != null)
                {
                    outputFile.Write(outputText, 0, outputText.Length);
                }
            }

            Console.WriteLine("Данные успешно зашифрованы\n" +
                              Encoding.UTF8.GetString(outputText));
        }