Не возвращает исходную строку - C#

Узнай цену своей работы

Формулировка задачи:

Ещё один пример из Шилдта. Задача была переделать слово для шифрования с типа int в тип string. Не пойму как можно разрешить данный вопрос. можете подсказать ошибки?
string msg = "Совершенно секретно. Алексу Юстасу";
            string encmsg = "";
            string decmsg = "";
            string key = "pyramida";
            
            int k;
            Console.WriteLine("Первоначальное сообщение");
            Console.WriteLine(msg);            
            Console.Write("Шифрование сообщения");
            for (int i = 0; i < msg.Length; i++)
            {                                
                for (k = 0; k < key.Length; k++)                                    
                        encmsg = encmsg + (char)(msg[i] ^ key[k]);      
                if (encmsg.Length >= msg.Length) break;        
            }
            Console.WriteLine(encmsg);
            Console.WriteLine("Расшифровка сообщения");
            for (int i = 0; i < msg.Length; i++)
            {
                for (k = 0; k < key.Length; k++)
                    decmsg = decmsg + (char)(encmsg[i] ^ key[k]);
                if (decmsg.Length >= msg.Length) break;
            }
                
            Console.WriteLine("\n" + decmsg);                           
            Console.Read();

Решение задачи: «Не возвращает исходную строку»

textual
Листинг программы
using System;
using System.IO;
using System.Linq;
using System.Text;
 
namespace shild03
{
    class Program
    {
        static void Main(string[] args)
        {
            Encryption enc = new Encryption();
            string msg = "Совершенно секретно. Алексу Юстасу";
            enc.Text = msg;
            Console.WriteLine($"{enc.NewText}");
 
            enc.Text = enc.NewText;
            Console.WriteLine($"{enc.NewText}");
 
            using (StreamReader reader = new StreamReader
                (File.Open(@"E:\Encryption.txt",
                FileMode.OpenOrCreate), Encoding.BigEndianUnicode))
            {
                enc.Text = reader.ReadToEnd()
                    ?? msg;
                if (string.IsNullOrWhiteSpace(enc.Text))
                    enc.Text = msg;
            }
 
            using (StreamWriter writer = new StreamWriter
                (File.Open(@"E:\Encryption.txt",
                FileMode.OpenOrCreate), Encoding.BigEndianUnicode))
            {
                writer.Write(enc.NewText);
            }
 
            Console.ReadKey(false);
        }
    }
    class Encryption
    {
        public string Key { get; set; } = "pyramida";
        public string Text { get; set; }
        public string NewText => new string(Text.ToCharArray()
            .Select((c, i) => (char)(~c ^ Key[i % (Key.Length - 1)]))
            .ToArray());
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы