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

Roh*_*hit 0 .net c# rsa cryptoapi

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

Yoh*_*all 5

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

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

byte[] publicKey = certificate.GetPublicKey();
Run Code Online (Sandbox Code Playgroud)

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

第二种方法允许即使不在受信任的根证书颁发机构中也可以获取证书。

X509Certificate executingCert = X509Certificate.CreateFromSignedFile("dll_file_name");
byte[] publicKey = certificate.GetPublicKey();
Run Code Online (Sandbox Code Playgroud)