如何从C#中的.Net DLL中提取公钥?

时间:2015-03-03 12:39:51

标签: c# .net rsa cryptoapi

我想从Autenticode签名的.Net DLL中提取C#中的公钥,而不是公钥令牌?

1 个答案:

答案 0 :(得分:5)

要从Autenticode签名的.Net库获取公钥,请使用以下代码:

Assembly assembly = Assembly.LoadFrom("dll_file_name");
X509Certificate certificate = assembly.ManifestModule.GetSignerCertificate();

byte[] publicKey = certificate.GetPublicKey();

但只有在证书安装到受信任的根证书颁发机构中时,这才有效。否则,GetSignerCertificate()将返回null。

即使第二种方式不在受信任的根证书颁发机构中,也可以获得证书。

X509Certificate executingCert = X509Certificate.CreateFromSignedFile("dll_file_name");
byte[] publicKey = certificate.GetPublicKey();