これは、ファイルを暗号化し、暗号を新しいファイルに書き込む必要がある私のコードの一部です。コードは、Microsoft MSDN Web ページにある例に似ています。
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 などに問題があります。