0

在 C# 中,我有一个 ZIP 文件,我想通过 XORing 或 Nulling 它的字节来破坏它。(通过 Nulling,我的意思是使文件中的所有字节都为零)对其字节进行异或首先需要我将字节读取到字节数组,将数组中的字节与某个值进行异或,然后将字节写回文件。

现在,如果我 XOR/Null 文件的所有(或一半)字节,它会被损坏,但如果只是 XOR/Null 一些字节,比如前几个字节(或文件任何位置的任意几个字节) ) 它不会被损坏,我的意思是我仍然可以访问该文件,就好像什么都没发生一样。

mp3 文件也发生了同样的事情。

为什么文件没有损坏?有没有一种“快速”的方式可以破坏文件?

问题是我正在处理的 zip 文件很大,所以 XORing/Nulling 甚至它的一半字节都需要几秒钟。

非常感谢你提前.. :)

4

3 回答 3

2

只需完全阅读所有文件,您可能会遇到阅读错误。

但是,当然,如果您想保留某些“秘密”,请使用加密。

一个 zip 包含一个小标题、一个目录结构(一个结尾)以及各个文件之间。有关详细信息,请参阅维基百科

损坏第一个字节肯定会损坏文件,但它也很容易修复。读者将无法在最后找到目录块。

损坏最后一个块具有相同的效果:读者会立即放弃,但可以修复。

更改中间的一个字节将损坏 1 个文件。CRC 将失败。

于 2012-08-11T13:37:01.923 回答
1

这取决于您尝试“损坏”的文件格式。它还取决于您尝试修改文件的哪个部分。最后,这取决于您如何验证它是否已损坏。大多数文件格式都有某种类型的错误检测。

对您不利的另一件事是zip 文件格式使用CRC 算法进行损坏。此外,目录结构有两个副本,因此您需要破坏两个副本。

我建议你在最后破坏目录结构,然后修改前面的一些字节。

于 2012-08-11T13:43:44.980 回答
0

我可以通过通行证锁定拉链条目,但我不希望任何人打开它并查看里面有什么

这听起来好像您正在寻找一种安全删除的方法。如果您只是不想让别人阅读该文件,请将其删除。否则,除非你做一些极端的事情,比如用不同的值遍历它十几次,或者对它应用一些复杂的算法一百次,否则仍然会有读取数据的方法,即使格式是“损坏的”。

另一方面,仅仅为了阻止其他人访问它而破坏文件似乎有点过分了。如果是 zip,您可以将其读入(这里有很多关于处理存档文件的问题),使用密码对其进行加密,然后将其写回。如果它是不同类型的文件,则实际上有上百万种不同的问题和解决方案用于加密、隐藏或以其他方式阻止对数据的访问。破坏文件不是你应该做的事情,除非这是为了帮助测试某种 un-zip-corrputing-program 或类似的东西,但你的评论暗示这是为了防止访问。也许更多关于您为什么要这样做的背景可以帮助我们提供更好的答案?

于 2012-08-11T14:06:46.697 回答