2015-03-03 120 views
0

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

+0

你尝试[的getpublickey(https://msdn.microsoft.com/en-us/library/system.reflection.assemblyname.getpublickey%28v=vs.110%29.aspx)? – Default 2015-03-03 13:18:12

+0

是否需要通过代码或通过Windows GUI才行? – 2015-03-03 13:19:42

+0

使用代码,因为我想做它运行时。我可以轻松提取我的用途。 – Rohit 2015-03-03 13:27:47

回答

3

要获得从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(); 
+0

如何通过closevote发布信息,是否将网页打开了半小时提交之前? :) – CodeCaster 2015-03-03 15:05:19

+0

是的,该页面已打开。 – 2015-03-03 15:08:28

+0

原来的问题没有这个答案!谢谢。 – Rohit 2015-03-04 04:54:32