0

我对 C# 比较陌生,并且正在尝试使用 Visual Studio 表单将我在 wxMaxima 中设计的文本加密算法改编为 C# 中的二进制加密程序。因为我是读取/写入二进制文件的新手,所以我对尝试读取或写入文件流时会发生什么缺乏了解。

例如,不是像我过去那样加密文本文件,而是说我想加密可执行文件或任何其他形式的二进制文件。

这里有几个我不明白的问题:

  1. 当我打开文件流并使用 binaryreader 时,它会读取文件中绝对所有内容的绝对副本吗?例如,我希望能够读取整个文件,删除原始文件,然后使用旧名称创建一个新文件并将整个二进制流写回。这会准确地复制原始文件还是会存在某种必须以其他方式解决的损坏?

  2. 因为它是一个加密程序,所以我希望添加一个功能,在删除原始文件之前对其进行低级“格式化”,这样理论上就无法通过组合硬盘的物理数据来访问它。如果我使用 binarywriter 用乱码覆盖原始文件的部分内容,它将被放在硬盘上的同一位置,还是文件会变得碎片化,实际上只是通过 FAT 重定向到硬盘的其他部分?显然,如果它没有覆盖硬盘上的原始集群,那么用乱码覆盖原始文件是没有意义的。

4

1 回答 1

1

对于您的第一个问题:BinaryReader不是您想要的。这个名字有点误导:它“将原始数据类型读取为特定编码中的二进制值”。您可能想要一个FileStream

关于第二个问题:这并不容易:请参阅 SDelete 的“SDelete 工作原理”部分获得解释。如果将来链接断开,请简要摘录:

“安全删除没有特殊属性的文件相对简单:安全删除程序只是用安全删除模式覆盖文件。更棘手的是安全删除 Windows NT/2K 压缩、加密和稀疏文件,以及安全删除清理磁盘可用空间。

压缩、加密和稀疏由 NTFS 在 16 个集群块中管理。如果程序写入此类文件的现有部分,NTFS 会在磁盘上分配新空间来存储新数据,并在写入新数据后,释放文件先前占用的集群。”

于 2014-01-18T17:11:13.163 回答