Ejemplo n.º 1
0
        private static void Decrypt()
        {
            byte[] inputText;
            byte[] outputTextCode = null;
            byte[] outputText     = null;

            RSA encoder = new RSA();

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

                byte[] key = new byte[privateKeyFile.Length];
                privateKeyFile.Read(key, 0, key.Length);
                encoder.ExportPrivateKey(Encoding.Default.GetString(key));
            }

            // Открываем файл с зашифрованным текстом EnryptedText.txt
            using (FileStream inputFile = new FileStream("EnryptedText.txt", FileMode.Open))
            {
                // Если файл пустой, то выводим сообщение об ошибке и завершаем программу
                if (inputFile.Length == 0)
                {
                    Console.WriteLine("Ощибка. Файл EnryptedText.txt пуст");
                    return;
                }

                inputText = new byte[inputFile.Length];
                inputFile.Read(inputText, 0, inputText.Length);
            }

            outputTextCode = encoder.Decrypt(inputText);
            outputText     = new byte[outputTextCode.Length];

            for (int i = 0; i < outputTextCode.Length; i++)
            {
                outputText[i] = Convert.ToByte(alphabet.FirstOrDefault(x => x.Value == outputTextCode[i]).Key);
            }

            // Запись результатов в файл DeryptedText.txt
            using (FileStream outputFile = new FileStream("DeryptedText.txt", FileMode.Create))
            {
                outputFile.Write(outputText, 0, outputText.Length);
            }

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