我有一個(gè)簽名的 C# Dll,我想測(cè)試它的真實(shí)性和文件完整性。到目前為止,我所做的是獲取證書并調(diào)用該證書上的驗(yàn)證方法:public ValidatorResult CheckDll(){ X509Certificate cert = null; try { cert = X509Certificate.CreateFromSignedFile(dllFilepath); } catch (CryptographicException) { return new ValidatorResult(ValidatorResult.DllStatus.INVALID_SIGNATURE); } if (cert == null || !ValidateCertificate(cert)) { return new ValidatorResult(ValidatorResult.DllStatus.INVALID_SIGNATURE); }} private bool ValidateCertificate(X509Certificate cert){ var chain = new X509Chain(); /* Do a chain verification */ var primaryCert = new X509Certificate2(cert.GetRawCertData()); if (!chain.Build(primaryCert)) return false; /* Call The Verify method on the newer X509Certificate2 class */ if (!primaryCert.Verify()) return false; return true;}我可能是錯(cuò)的,所以請(qǐng)糾正我,但從我在互聯(lián)網(wǎng)上看到的,Verify() 方法只檢查證書的有效性。我還需要檢查文件的完整性。我使用“Resource Hacker”工具做了一個(gè)小測(cè)試,我加載了 dll 并更改了公司名稱。這個(gè)修改過的dll通過了上面的代碼。我應(yīng)該如何更改代碼以便我可以檢查文件是否被修改?
- 1 回答
- 0 關(guān)注
- 433 瀏覽
添加回答
舉報(bào)
0/150
提交
取消