Алгоритм шифрования Rijndael реализован в .NET с использованием 3 потоков в следующем примере: Rinjdael.Что делают Streams при внедрении AES в .NET?
Может кто-нибудь объяснить мне, что делают эти потоки? Как/Почему они используются?
// 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);
}
не должен ли встроенная оболочка AES делать все это внутри и просто возвращать строку? Или это слишком много для метода? (Я так думаю, так как они построили его таким общим) –
Криптография обычно применяется к потокам двоичных данных. Это дает большую гибкость. Пусть часть AES сделает то, что хорошо, и пусть StreamWriter делает то, что * * * хорошо, и т. Д. :) –
(Но вы можете написать свою собственную упаковку удобства, конечно.) –