重建

时间:2015-07-06 09:17:54

标签: c# dll md5

我想知道在新版本之后我是否可以为dll / exe一致制作MD5?

每次重建项目并使用“Microsoft File Checksum Integrity Verifier”工具获得不同的MD5。

我发现了一些关于这个问题的articals,有人说这是由于PE32文件头上的时间戳。我对此一无所知。请有人帮忙吗?提前谢谢!

以下是我获得MD5总和的方法。 MD5Compare.exe完全相同,只是它们不是在同一版本中创建的。

C:\Users\Administrator>fciv.exe D:\Lab\MD5Compare\MD5Compare\bin\Debug\2 -wp MD5
Compare.exe
//
// File Checksum Integrity Verifier version 2.05.
//
5cdca6373aca0e588e1e3df92a1d5d0a MD5Compare.exe

C:\Users\Administrator>fciv.exe D:\Lab\MD5Compare\MD5Compare\bin\Debug\2 -wp MD5
Compare.exe
//
// File Checksum Integrity Verifier version 2.05.
//
cf5caace5481edc79fd7bf3e99b48a5b MD5Compare.exe

2 个答案:

答案 0 :(得分:3)

不,校验和必须不同,因为文件中的数据实际上已经改变了,即使没有代码 - 编译没有功能差异,没有新的功能添加到程序集 - 因为构建的时间戳,对于一个,将是不同的。

因此,您需要在此处考虑元数据,以及如何存储/影响文件系统上文件的属性,以及完整性检查。

答案 1 :(得分:1)

请考虑MD5应该做什么:它应该确保没有人在二进制级别上更改您的文件。它应该确保您的文件完全相同。拥有多个版本(不同的文件)具有相同的MD5校验和将无法实现具有MD5的目的。

如果您可以在校验和保持不变的情况下更改文件,那么黑客也可以。