我有一个 C# 应用程序。当它在 pakage 之前发布时,我使用 IntelliLock 加密它。并使用startssl数字签名。(实际上我不知道如何使用它,是否可以使用它来验证dll?)
但我还是担心这个:有1或2个dll use check use identity,而且非常小。我担心它会被同名修改和替换。那么应用程序将不会检查身份。
所以我的问题是,有没有办法检查在 IntelliLock 和 startssl 数字签名步骤后 dll 是否被修改?
非常感谢。
最佳答案
我相信最好的办法是尝试从 DLL 加载字节并计算校验和。校验和是根据预先计算的值表对文件中的字节进行累积计算。可以使用库或您自己的实现来计算校验和。我会读取文件内容,然后计算校验和。
您需要通过网络或引用本地存储的值来验证该值。有些人能够解决这个问题并修改您的文件的一种方法是运行您的应用程序,反编译并找出校验和的计算方式,修改 DLL,然后更改本地存储的校验和以匹配。在服务器上使用 webAPI 来验证校验和可能是最安全的方法。
一些使用 MD5 作为校验和,如下所示: Calculate MD5 Checksum
还有足够的信息让您从这里开始: Generating a checksum for a file
关于c# - C#如何确保完整性?(DLL未修改),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18691651/