2015-03-03 141 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