強名用來證明這個生成的程式集是你發布的;而且,如果你寫的程式集要用在多個應用程式上的話,那麼這個程式集必須要擁有唯一的名稱,這個強名稱是程式集唯一名稱的一部分。 另外,只要你保護好你的snk檔案不要公布出去,那麼沒有任何人可以假冒你發布程式集。 強名稱簽名的原理是不對稱簽名驗證演算法。 首先你用sn.exe命令列程式生成乙個.snk的金鑰檔案,這個檔案包括了兩個部分的內容。 1 私鑰,就是在vs.net編譯的時候生成驗證碼的東西。 2 公鑰,編譯的時候打包到程式集元資料中publickey部分的內容。 而且,驗證碼只能通過私鑰來生成,只有通過私鑰生成的驗證碼才能通過.net clr的驗證。 clr驗證程式集的時候通過讀取公鑰來生成驗證物件,生成過後對整個程式集的內容進行驗證,拿這個驗證碼與程式集裡面的驗證碼對比,如果吻合就通過,如果不吻合表示程式集已經被修改了,clr將拒絕載入這個程式集並且認為需要的程式集沒有找到,丟擲filenotfoundexception異常。 比如說微軟的.net類庫中的system.dll、system.web.dll等,都經過了強名稱驗證,保證別人只能使用這些類庫,而不能修改,還保證這些程式集是微軟推出的。而且,這些程式集是存放在共享目錄裡面的,更加需要強名稱了。
強名稱方案
下面的方案說明了使用強名稱對程式集簽名及以後按照該名稱引用它的過程。
使用以下方法之一建立強名稱程式集 a:
使用支援建立強名稱(如 visual studio 2005)的開發環境
開發環境或工具使用開發人員私鑰對包含程式集清單的檔案雜湊簽名。該數字簽名儲存在包含程式集 a 的清單的可移植可執行 (pe) 檔案中。
程式集 b 是程式集 a 的使用者。程式集 b 的清單的引用部分包括代表程式集 a 公鑰的標記。標記是完整公鑰的一部分,並且這種標記(而不是金鑰本身)可用於節省空間。
公共語言執行庫在程式集放在全域性程式集快取時驗證強名稱簽名。當執行時強名稱進行繫結時,公共語言執行庫會將儲存在程式集 b 的清單中的金鑰與用於為程式集 a 生成強名稱的金鑰進行比較。如果 .net framework 安全檢查通過並且繫結成功,則程式集 b 可保證程式集 a 的位未被篡改,而這些位實際來自程式集 a 的開發人員。
注意 此方案不處理信任問題。程式集除強名稱外,還帶有完整的 microsoft® authenticode® 簽名。authenticode 簽名包括建立信任的證書。請注意,強名稱不要求以這種方式為**簽名,這一點非常重要。事實上,用於生成強名稱簽名的金鑰不必與用於生成 authenticode 簽名的金鑰相同。
強名介紹Strong Name
錯誤 對程式集 dll 簽名時加密失敗 讀取金鑰檔案 x.snk 時出錯 系統找不到指定的檔案。原因是沒有金鑰檔案,可以使用這樣的方法建立乙個金鑰檔案 1,找到簽名工具sn.exe,預設的路徑是 系統盤 program files microsoft visual studio net 2003 s...
lwIP 介紹 2 介紹
我的部落格 現今,無線網路技術比如藍芽與ieee 802.11b g wifi 已經成為大部分人生活不可或缺的一部分。這使得關於健康管理 安全加密 傳輸 工業處理等相關設施的蓬勃發展。小的裝置比如感測器,可以連線到現有的網路設施,在網路上進行監控。網路技術已經證明自身足夠靈活來適應千變萬化的網路環境...
陣列名與指標2
指標與陣列名2 1,方括號運算子 在定義陣列的時候就不說了,就是開闢一片連續的空間,陣列名是首位址,是常量。在呼叫陣列元素時用的是方括號,例如int a 5 a 1 2 在a 1 2 這個語句的實質是 a 1 2 所以方括號的作用是將前面的和括起來的相加再做間訪 間接訪問 操作,因此a 1 2 等價...