首页 > 解决方案 > FileStreams 的安全使用

问题描述

我正在编写一个有趣的加密程序。我偶然发现了这个问题,即使通过用 a 打开FileStream并写入一堆随机字节来覆盖已删除的文件,它也不会消失。

但是我当前的程序实现是创建一个新的临时文件,将加密/解密的数据写入其中以节省 RAM。我现在想知道是否确实存在相同的问题,即使我没有终止FileStream自文件创建以来就存在的对象。

因此,如果我只是将流位置设置回零并覆盖每个字节,它真的会写入与开始时相同的位置还是临时文件的某些部分可以保留?如果是这样,我可以使用任何解决方法吗?

我目前的做法:

var fileStream = new FileStream(path, FileMode.Create);
fileStream.Write(//possible decrypted data);

fileStream.Position = 0;

byte[] bytes = RandomBytes();
long amount = (fileStream.Length / bytes.Length + 1);

for (long i = 0; i < amount; i++)
{
    fileStream.Write(bytes, 0, bytes.Length);
}

string name = fileStream.Name;
fileStream.Close();
File.Delete(name);

标签: c#.net

解决方案


推荐阅读