Расшифровка данных из потока без знания размера данныхC#

Место общения программистов C#
Ответить
Anonymous
 Расшифровка данных из потока без знания размера данных

Сообщение Anonymous »

Предполагая, что мы знаем ключ и IV для данных, которые мы получаем от потока, возможно ли расшифровывать его в потоке? Я зашифровал одно и то же сообщение три раза, а затем расширил все это сразу, получая неправильные результаты. Возможно, мне следует обнаружить прокладку на приемной стороне и повторно инициализовать криптострим? PrettyPrint-Override ">using System.Security.Cryptography;

var aes = Aes.Create();

aes.Key = Enumerable.Repeat((byte)1, 16).ToArray();
aes.IV = aes.Key;
//aes.Padding = PaddingMode.None;

var line = Encoding.Unicode.GetBytes("hello stackoverflow ");

// expected result
Print(Enumerable.Repeat(line, 3).SelectMany(i=>i).ToArray());

var enc = Enumerable.Repeat(aes.EncryptCbc(line, aes.IV), 3).SelectMany(i=>i).ToArray();

// getting data from stream, e.g. NetworkStream
using var mem = new MemoryStream(enc);

using var stream = new CryptoStream(mem, aes.CreateDecryptor(), CryptoStreamMode.Read);

var results = new byte[192];
var read = 0;
while(true){
int r = stream.Read(results, read, results.Length - read);
read += r;
if(r==0)break;
}
Print(results);

Console.WriteLine(Encoding.Unicode.GetString(results));

void Print(byte[] arr){
foreach (var b in arr)
{
Console.Write($"{b:X2} ");
}
Console.WriteLine();
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... -data-size
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»