強名稱工具 Sn exe 來建立金鑰對

2021-04-13 07:19:19 字數 1248 閱讀 5273

要使用強名稱為程式集簽名,必須具有公鑰/私鑰對。這一對加密公鑰和加密私鑰用於在編譯過程中建立強名稱程式集。您可以使用

強名稱工具 (sn.exe)

來建立金鑰對。金鑰對檔案通常具有 .snk 副檔名。

下面的示例建立名為sgkey.snk的金鑰對。

sn -k sgkey.snk
如果您需要延遲對程式集簽名並控制整個金鑰對(金鑰對不太可能在測試方案之外),可使用以下命令生成金鑰對,然後從中將公鑰提取到乙個單獨的檔案中。首先,建立金鑰對:

sn -k keypair.snk

sn -p keypair.snk public.snk
當使用強名稱對程式集進行簽名時,

程式集鏈結器 (al.exe)

查詢與當前目錄和輸出目錄相關的金鑰檔案。當使用命令列編譯器時,只需將金鑰複製到包含**模組的當前目錄即可。

如果要使用 ide(例如 visual studio 2005)為程式集簽署強名稱,則必須知道 ide 查詢金鑰檔案的位置。例如,visual basic 2005 在包含 visual studio 解決方案的目錄下查詢金鑰檔案,而 c# 編譯器則在包含二進位制檔案的目錄下查詢金鑰檔案。將金鑰檔案放在適當的專案目錄中並設定檔案屬性,如下所示:

visual basic 

c# 

[assembly: assemblykeyfileattribute(@"../../key.snk")]

強名稱保護

用 籤強名稱我會 中 sn k key.snk csc keyfile key.snk cs 強名稱的去除 頭中的flag項,去除comimage flags strongnamesigned標誌 頭中的strongnamesignature,與 為 表中的 項,送去0 0001 標識 通常變後為0...

強名稱(3)強名稱的脆弱性

通過前文共同體驗了強名稱對程式集的保護方式和原理,但是這種保護的強度到底有多大呢?能有效地防禦惡意篡改者嗎?先看下面的例子。回到上篇文章的 清單 9 7,重新對 strongnamereferencelib 專案進行強名稱簽名,然後編譯 strongname 專案。在 strongname 專案的b...

強名稱程式集不能引用非強名稱程式集

想生成乙個強名稱程式集,引用了乙個非強名稱程式集裡的型別,結果在編譯時出錯 error cs1577 程式集生成失敗 引用的程式集 mytypes 沒有強名稱 檢視msdn中編號為cs1577的編譯器錯誤,顯示如下資訊 程式集生成失敗 原因 編譯的程式集生成部分失敗。有關更多資訊,請參見 alink...