У меня есть приложение, использующее криптографию, в основном в потоках (файл и память), которые я дешифрую по мере необходимости в новом MemoryStream. Все это хорошо работает. Единственное, что я хотел бы удалить содержимое MemoryStream, когда я закончил с ним (а также строки и т.д., В которые я копирую фрагменты), чтобы он никогда не попадал на диск в дешифрованной форме через файл подкачки. В "хорошем старомодном" C++ я бы просто свернул данные со случайным мусором, прежде чем удалил его - есть ли способ с управляемыми объектами?
Вы можете получить базовый байт [] с помощью MemoryStream.GetBuffer, а затем заполнить его случайными данными.
В небезопасном контексте вы обычно делаете это с помощью Random.NextBytes, но в вашем случае RNGCryptoServiceProvider.GetBytes предоставляет криптографически безопасный генератор случайных чисел в качестве источника байтов заполнения.
После извлечения буфера утилита MemoryStream обычно вызывается функцией MemoryStream.Dispose.
SecureString
.