答案1
为什么测试和提取没有返回错误?
因为 zip 文件肯定是没有问题的。Zip 格式使用 CRC-32来检测损坏,并且随机改变的文件不太可能通过此测试。
因此我认为旧的校验和有问题。它是几年前计算错误的。
这可能是什么原因造成的?
您可能遇到过软件错误。认为可能存在仅在特定情况下才会出现的错误。另一方面,计算校验和相对简单。我们无法真正排除这种可能性,但我宁愿归咎于其他原因。
宇宙射线。或者其他什么东西使 RAM 中的单个位翻转,改变其状态。这不是最终的校验和位,因为两个校验和在许多位上有所不同。我猜在计算之前或计算过程中翻转了一个位,之后执行了多个操作,而这个单一的更改影响了整个结果。我可以从md5
您的屏幕截图中看到,我猜您的校验和是 MD5。这是一个哈希函数;这样的函数是故意以某种方式创建(即定义、选择)的,因此当您翻转给定输入一半(平均而言)输出位中的单个位时,输出位也会翻转。翻转的位可能不是输入位,可能是一些间歇位;不过,难怪这两个和非常不同。
我提到了宇宙射线,但也有可能你的记忆不是 100% 可靠的,而且如果没有外部原因的话,可能会有点混乱。
这些事情确实会发生。以下是一些例子:
此作者写了一个开始产生错误的可执行文件。结果发现缓存 (RAM) 中的文件与磁盘上的同一文件确实有一点不同。
利用内存错误攻击虚拟机作者:Sudhakar Govindavajhala 和 Andrew W. Appel。
我们的攻击方式是向 JVM [Java 虚拟机] 发送一个 Java 程序,该程序的设计使得其地址空间中的几乎任何内存错误都允许它控制 JVM。所有传统的 Java 和 .NET 虚拟机都容易受到这种攻击。
阿乔姆·迪纳堡注册域名与各种流行域名略有不同。来自世界各地的设备都访问了这些地址。