Что делают Streams при реализации шифрования AES в .NET? - PullRequest
1 голос
/ 11 ноября 2008

Алгоритм шифрования Rijndael реализован в .NET с использованием 3 потоков в следующем примере: Rinjdael .

Может кто-нибудь объяснить мне, что делают эти потоки? Как / почему они используются?

// Declare the streams used
// to encrypt to an in memory
// array of bytes.
MemoryStream msEncrypt = null;
CryptoStream csEncrypt = null;
StreamWriter swEncrypt = null;

// Declare the RijndaelManaged object
// used to encrypt the data.
RijndaelManaged aesAlg = null;

try
{
    // Create a RijndaelManaged object
    // with the specified key and IV.
    aesAlg = new RijndaelManaged();
    aesAlg.Key = Key;
    aesAlg.IV = IV;


    // Create a encryptor to perform the stream transform.
    ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV);

    // Create the streams used for encryption.
    msEncrypt = new MemoryStream();
    csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write);
    swEncrypt = new StreamWriter(csEncrypt);

    //Write all data to the stream.
    swEncrypt.Write(plainText);

}

1 Ответ

3 голосов
/ 11 ноября 2008

swEncrypt - это StreamWriter - его работа заключается в преобразовании текста в двоичные данные

csEncrypt - это CryptoStream - его задача - преобразовать двоичные данные в зашифрованные двоичные данные

msEncrypt - это MemoryStream - его задача состоит в том, чтобы хранить данные, которые он предоставляет, в памяти, чтобы вы могли получить их позже

Когда вы соединяете их все вместе, вы в основном получаете что-то, что вы можете написать простым текстом на одном конце, и получить зашифрованные двоичные данные (временно сохранив их в памяти) на другом конце.

...