【发布时间】:2013-04-10 14:37:20
【问题描述】:
我有一个经过数字签名的二进制 app.exe。证书由商业 CA 颁发。在文件属性中(在 Windows 上),数字签名信息表明 此数字签名正常。如果我以某种方式修改二进制文件(例如,通过更改 Resource Hacker 中的资源)数字签名信息表明 此数字签名无效。
我尝试以编程方式验证证书,但X509Certificate2.Verify() 返回true,无论我使用哪个文件 - 原始文件 (app.exe) 或篡改文件 (app-modified.exe)。
string filename = "app.exe"; // "app-modified.exe"
X509Certificate cert1 = X509Certificate.CreateFromSignedFile(filename);
X509Certificate2 cert2 = new X509Certificate2(cert1);
bool isValid = cert2.Verify();
为什么这个函数在这两种情况下都返回 true?这是验证文件数字签名的正确方法吗?
【问题讨论】:
标签: c# x509certificate digital-signature x509certificate2