在Compact Framework中安全擦除文件

时间:2010-07-18 10:36:21

标签: c# windows-mobile filestream security

给定字符串的路径我想要清除文件的内容。我认为(可能不正确)的自然方式是向文件打开FileStream并将乱码(可能从RNGCryptoServiceProvider获取的随机数据)写入其中。然后可能多次这样做,然后删除该文件。

我的问题是虽然这可能看起来在逻辑上是正确的,但我在另一篇博客上读到,Windows可能实际上选择将文件写入硬盘中的其他位置。

Windows Mobile中是这种情况吗?这实际上会成为问题吗?写入硬盘中的其他位置是否适用于基于闪存的(SD等)卡?

1 个答案:

答案 0 :(得分:1)

我个人没有这样做,但您可能需要使用低级FLASH驱动程序IOCTL来正确执行此操作。

http://msdn.microsoft.com/en-us/library/aa927166.aspx

我认为IOCTL_FMD_RAW_WRITE_BLOCKS看起来特别有用。

-PaulH


另一种可能的工作方式是正常擦除文件,然后使用碎片整理API擦除闪存上的所有可用空间。由于您正在擦除所有内容,因此无需确切知道文件在磁盘上的位置。但是,这会更快地耗尽您的闪存驱动器。 C#方法详见本博文:http://blogs.msdn.com/b/jeffrey_wall/archive/2004/09/13/229137.aspx