Я создал тестовую (не настоящую) функцию шифрования, которая принимает байт [] и заменяет все байты на 0xff и возвращает
private byte[] encrypt(byte[] input)
{
for (int i = 0; i < input.Length; i++)
{
input[i] = 0xff;
}
return input;
}
Теперь я хочу попробовать эту тестовую процедуру шифрования для файла,Но я хочу иметь возможность читать и записывать в тот же файл.
Это то, что я сделал до сих пор
using (FileStream myfileStream = new FileStream(openFile, FileMode.Open,FileAccess.ReadWrite))
{
byte[] buffer = new byte[16];
while (myfileStream.Position < myfileStream.Length)
{
myfileStream.Read(buffer, 0, 16);
buffer = encrypt(buffer);
myfileStream.Position -= 16;
myfileStream.Write(buffer, 0, 16);
}
myfileStream.Close();
}
Это прекрасно работает, но я знаю, что я не делаю это правильно.Кажется, это ОЧЕНЬ серьезные проблемы с производительностью, когда для файла размером 1 МБ потребовалось 24 секунды.(Проверено с помощью StopWatch в эмуляторе WinMo 6 Pro).
Что я здесь не так делаю?Что я могу сделать, чтобы повысить производительность при одновременном чтении и записи в один и тот же файл?Пожалуйста, порекомендуйте.Большое спасибо заранее:)
ОБНОВЛЕНИЕ:
Я сократил время, которое это заняло значительно (с 24 секунд до 6 секунд), используяОбъекты FileStream, указывающие на один и тот же файл со свойством FileShare.ReadWrite
.
Безопасно ли это делать?Это нормально?
ОБНОВЛЕНИЕ СНОВА
Хотя я использовал алгоритм поддельного шифрования, я надеюсь использовать AES с CBC + CTS.