Ну, криптографический хеш не должен ставить под угрозу безопасность, пока он солен и имеет разумную сложность; лично я, вероятно, попытался бы настроить его так, чтобы повреждение данных (из-за неправильного пароля) было очевидно на раннем этапе ...
Есть ли возможность вводить контрольные суммы в данные через равные промежутки времени? Или, если поток представляет записи, вы можете прочитать его с помощью итератора (IEnumerable<T>
и т. Д.), Чтобы он читался лениво и рано прерывался?
( edit ) Также - принудительно дешифрует нетривиальный кусок данных (но не весь поток), прежде чем он сможет сказать, был ли пароль верным, должно быть достаточно, чтобы его было трудно переборить -force. Если он должен работать только с первыми 128 байтами (или чем-то еще), это может быть достаточно быстрым, чтобы его можно было попробовать (словарь и т. Д.). Но при регулярном использовании (одна попытка, правильный или неправильный пароль) это не должно влиять на производительность.