Как дешифровать объедененные строки? Задача:
Зашифрованный текст должен храниться в файле текстового формата вместе с ключом. Перед записью в файл зашифрованного текста и ключа предварительно перемешайте записываемые массивы (в получаемом массиве выделяются фиксированные позиции для хранения символов ключа; для корректной сборки ключа необходимо указать длину ключа в символах и шаг фиксированных позиций, т.е. через сколько символов шифрованного текста находятся символы ключа; указанные признаки можно записать в качестве первых двух байтов файла или же в других позициях файла).Пример:
1) Перемешать строки.Входные переменные:
text = "abcd"
key = "12"
step = 2Выходные переменные:
result = "1ab2cd"
2) Теперь мне нужно привести перемешанную строку к исходным данным, где заранее известна длина ключа и шаг.Входные переменные:
result = "1ab2cd"
key.Length = 2
step = 2Выходные переменные:
text = "abcd"
key = "12"
Алгоритм по перемешиванию строки (1) уже реализован:using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Input
{
class Program
{
static void Main(string[] args)
{
int step, word;
string text, key, result = string.Empty;

Console.Write("Enter Text : ");
text = Console.ReadLine();
Console.Write("Enter Key : ");
key = Console.ReadLine();
Console.Write("Enter Step : ");
step = int.Parse(Console.ReadLine());

// MIX STRING
word = 0;

if (step <= text.Length)
{
for (int i = 0; i < key.Length; i++)
{
result += key.Substring(i, 1);
for (int k = 0; k < step; k++)
{
try
{
result += text.Substring(word, 1);
word++;
}
catch
{
break;
}
}
}

if (word

21 Авг 2019 в 06:23
324 +1
0
Ответы
1

Для дешифровки строки необходимо реализовать обратный алгоритм от перемешивания строки к исходным данным. В вашем случае, для дешифровки строки result обратно к исходным данным text и key, можно использовать следующий код:

int step, keyLength;
string result, text = string.Empty, key = string.Empty;
Console.Write("Enter Result Text : ");
result = Console.ReadLine();
Console.Write("Enter Key Length : ");
keyLength = int.Parse(Console.ReadLine());
Console.Write("Enter Step : ");
step = int.Parse(Console.ReadLine());
// DECIPHER STRING
int keyIndex = 0;
int textIndex = keyLength;
while (textIndex < result.Length)
{
key += result.Substring(keyIndex, 1);
text += result.Substring(keyLength, step);
keyIndex++;
textIndex += step;
}
Console.WriteLine("Deciphered Text : " + text);
Console.WriteLine("Deciphered Key : " + key);
Console.ReadKey();

Этот код должен успешно дешифровать строку result обратно к исходным данным text и key с заданными параметрами длины ключа и шага.

20 Апр 2024 в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир