Я относительно новичок в C #, поэтому, пожалуйста, потерпите меня.
Я пишу небольшое приложение на C # (.NET 4.0).Для записи файлов я использую некоторые варианты этого кода:
using (var fStream = new FileStream(filename, FileMode.CreateNew, FileAccess.Write,
FileShare.Read))
using (var crypto = new CryptoStream(fStream, encryptor, CryptoStreamMode.Write))
using (var binary = new BinaryWriter(crypto))
Я бы хотел убедиться, что файлы не повреждены и не подделаны.Таким образом, я подумал об использовании sha256 или hmac с sha256 (если он не намного медленнее). Я не знаю, как эффективно реализовать хеширование содержимого файла .
Мои идеи на данный момент таковы:
1.) Hmac.ComputeHash (stream) - но он не работает в двоичном потоке - если я использую файловый поток, я не знаю, какие частипотока, который он хэширует, потому что я хочу добавить хеш в конец файла.Таким образом, я не знаю при чтении, как хэшировать файловый поток без хэширования добавленного хеша.
2.) Использовать двоичный поток для чтения / записи в / из потока памяти, а затем вызывать memory.ToArray () и хэшировать, чтоМассив байтов - я думаю, что это довольно неэффективно
Что мне делать?
Спасибо за ваши идеи и ответы.