两个文件之间的校验和

Checksum between 2 files

我有 2 个文件,我们称它们为 "a.exe" 和 "b.exe" 我想要的是让 "a.exe" 包含 "b.exe" 的校验和并进行比较知道 "b.exe" 是否被编辑,反之亦然。

我已经尝试过的: 我的问题是,当我在 "a.exe" 上包含校验和时,它的校验和会发生变化,如果我在 "b.exe" 上包含 "a.exe" 的校验和也是如此。

有什么解决方法吗?

基本上我想要的是两个文件相互检查,这样如果其中一个文件被更改,另一个文件就会知道。

下面的方法可以工作,尽管它是一种 hack 并且不是特别安全。但根据您的用例,它可能就足够了。

首先,编译a.exe和b.exe。然后,计算 a.exe 的校验和并将其附加到 b.exe 的末尾。并计算 b.exe 的校验和并将其附加到 a.exe.

的末尾

现在,要让 a.exe 验证 b.exe 的校验和,您在 a.exe 中执行以下操作:

  1. 将 b.exe 作为二进制文件打开。
  2. 将 b.exe 的内容读入内存,减去包含 a.exe 校验和的最后几个字节。
  3. 计算该内存块的校验和。
  4. 从 a.exe 末尾读取 b.exe 的校验和。
  5. 将计算的校验和与您从 a.exe 末尾获得的值进行比较。

这不安全,因为有人可以修改文件并更改校验和。

将校验和附加到 Windows 中的 exe:

copy /b a.exe + checksum.txt newa.exe

我不知道如何在其他操作系统上执行此操作。