Не возвращает исходную строку - 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());
}
}