Использование C# MemoryStream для шифрованияC#

Место общения программистов C#
Ответить
Anonymous
 Использование C# MemoryStream для шифрования

Сообщение Anonymous »

Я часто вижу код, который выглядит примерно так (key и Plain — это байтовые массивы)

Код: Выделить всё

    byte[] cipher;
using (Aes algo= Aes.Create())
{
algo.Mode = CipherMode.ECB;
algo.Key = key;
algo.KeySize = key.Length * 8;
algo.Padding = PaddingMode.None;

// Create an encryptor to perform the stream transform.
ICryptoTransform encryptor = algo.CreateEncryptor(algo.Key, null);

// Create the streams used for encryption.
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
// Sometimes another using StreamWriter/StreamReader if supplying
// string instead of byte[]
csEncrypt.Write(plain);
csEncrypt.FlushFinalBlock();
}

cipher = msEncrypt.ToArray();
}
}
Мне просто интересно, почему используются MemoryStream и CryptoStream. Почему бы и нет

Код: Выделить всё

    byte[] cipher;
using (Aes algo= Aes.Create())
{
algo.Mode = CipherMode.ECB;
algo.Key = Key;
algo.KeySize = key.Length * 8;
algo.Padding = PaddingMode.None;

// Create an encryptor to perform the stream transform.
ICryptoTransform encryptor = algo.CreateEncryptor(key, null);
cipher = encryptor.TransformFinalBlock(plain, 0, plain.Length);
}
Возможно, TransformFinalBlock использует MemoryStream и CryptoStream внутри себя, поэтому такой способ более эффективен — у меня нет доступа к реализации, поэтому я не могу точно сказать. В качестве альтернативы, CryptoStream использует TransoformFinalBlock, и в этом случае он менее эффективен.
Я пытался рассчитать время, чтобы увидеть, работает ли один быстрее, чем другой, но секундомер просто дает мне совершенно разные результаты. , даже после 100 000 запусков.
Примечание: это всего лишь простой пример – нет нужды распространяться о том, насколько плох ЕЦБ.
В примере C# веб-сайта MS используется метод MemoryStream/CryptoStream, поэтому
  • Это более эффективно?
  • они просто дают пример использования CryptoStream?


Подробнее здесь: https://stackoverflow.com/questions/790 ... encryption
Ответить

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

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

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

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

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