這是我的一段代碼,它應該加密文件並將密碼寫入新文件。代碼與Microsoft MSDN網頁上的示例類似。AES C#文件加密 - 流寫入只有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等
不要擔心,這是確保在程序邏輯。 – 2013-05-08 19:46:38