Это не будет безопасно вообще. Вместо этого вы можете рассмотреть альтернативные решения, такие как шифрование.
Одним из решений будет шифрование содержимого файла данных. Новый ключ будет использоваться каждый раз, когда файл обновляется. Если вы хотите «безопасно удалить» данные, просто «потеряйте» ключ шифрования и удалите файл. Файл все еще будет на диске физически, но без ключа шифрования восстановление было бы невозможно.
Вот более подробное объяснение того, почему «безопасная» перезапись файлов является плохой безопасностью:
Без инструмента низкого уровня (вне среды выполнения .net) у вас нет доступа к расположению физического диска. Возьмите файловый поток в NTFS, когда вы «открываете файл для доступа к записи», у вас нет гарантии, что «обновленная» копия (в данном случае случайная версия 101010) будет храниться в том же месте (перезаписывая оригинальный файл). Фактически, в большинстве случаев именно так и происходит:
1) Файл x.dat хранится начиная с кластера 8493489
2) Вы открываете файл x.dat для доступа на запись. ОС возвращает вам просто указатель на файловый поток, абстрагированный не только ОС, но и базовой файловой системой и драйверами устройств (например, аппаратный RAID), а иногда и самим физическим диском (SSD). Вы обновляете содержимое файла со случайными 1 и 0 и закрываете поток файлов.
3) ОС, вероятно, может (и, вероятно, будет) записывать новый файл в другой кластер (например, кластер 4384939). Затем он просто обновит MFT, указав, что файл x теперь хранится в 4384939.
Конечному пользователю кажется, что существует только одна копия файла, и теперь в нем есть случайные данные, однако исходные данные все еще существуют на диске.
Вместо этого вам следует рассмотреть возможность шифрования содержимого файла другим ключом при каждом сохранении файла. Когда пользователь хочет "удалить" файл, удалите ключ и файл. Физический файл может остаться, но без ключа шифрования восстановление будет невозможно.