7和35通擦除的工作方式和原因是什么?不应该用全零的简单重写就足够了吗?
在我正在做的项目中,我想让用户选择"安全地"删除文件 - 例如,用随机位或0覆盖它.在C#.NET中有一种简单易行的方法吗?它的效果如何?
在.NET中的Shredding文件中,建议在CodeProject上使用橡皮擦或此代码来安全地擦除.NET中的文件.
我试图制作自己的方法,因为CodeProject的代码对我来说有些问题.这是我想出的:
public static void secureDelete(string file, bool deleteFile = true)
{
string nfName = "deleted" + rnd.Next(1000000000, 2147483647) + ".del";
string fName = Path.GetFileName(file);
System.IO.File.Move(file, file.Replace(fName, nfName));
file = file.Replace(fName, nfName);
int overWritten = 0;
while (overWritten <= 7)
{
byte[] data = new byte[1 * 1024 * 1024];
rnd.NextBytes(data);
File.WriteAllBytes(file, data);
overWritten += 1;
}
if (deleteFile) { File.Delete(file); }
}
Run Code Online (Sandbox Code Playgroud)
它似乎工作正常.它随机重命名文件,然后用1 mb的随机数据覆盖7次.但是,我想知道它实际上有多安全,如果有的话,我可以让它更安全吗?