2个文件之间的校验和

时间:2019-01-09 06:49:34

标签: hash checksum

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

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

对此有任何解决方法吗?

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

1 个答案:

答案 0 :(得分:1)

以下内容可以工作,尽管它是一种黑客手段,但并不是特别安全。但是根据您的用例,可能就足够了。

首先,编译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

我不知道如何在其他操作系统上做到这一点。