Вот фрагмент моего кода, который должен шифровать файл и писать криптограф в новый файл. Код аналогичен примеру, найденному на веб-странице Microsoft MSDN.AES C# File Encryption - поток записывает только 16 байтов
byte[] inputBuffer = new byte[InputFileStream.Length];
byte[] outputBuffer = new byte[InputFileStream.Length];
InputFileStream.Read(inputBuffer, 0, (int)InputFileStream.Length);
ICryptoTransform encryptor = AesInstance.CreateEncryptor(AesInstance.Key, AesInstance.IV);
using (MemoryStream memoryStream = new MemoryStream())
{
using (CryptoStream stream = new CryptoStream(memoryStream, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter encrypted = new StreamWriter(stream))
{
encrypted.Write(inputBuffer);
}
outputBuffer = memoryStream.ToArray();
OutputFileStream.Write(outputBuffer, 0, (int)outputBuffer.Length);
}
}
OutputFileStream.Close();
InputFileStream.Close();`
Проблема заключается в том, что входной буфер считывает байты из файла, но выходной буфер, по-видимому, содержит только 16 байт данных. В результате выходной файл имеет только 16 байт, даже если входной файл был большим. Где ошибка? Проблема существует в различных режимах, ECB, CBC и т.д.
Не беспокойтесь о том, что обеспечивается в логике программы. –