明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

.NET中的強名稱機制

[摘要]一個程序集包括四個區(qū)分彼此的屬性:l 文件名(不包括擴展)l 版本號l 文化標(biāo)識l 公鑰標(biāo)識現(xiàn)在讓我們來看看一個比較常見的強名稱程序集...
一個程序集包括四個區(qū)分彼此的屬性:

l 文件名(不包括擴展)

l 版本號

l 文化標(biāo)識

l 公鑰標(biāo)識

現(xiàn)在讓我們來看看一個比較常見的強名稱程序集:

l Name= MSCorLib

l Version=1.0.3300.0

l Culture=neutral

l PublicKeyToken=b77a5c561934e089

如果我們自己編寫一個弱名稱程序集,那么通常PublicKeyToken這一項就沒有。

下面我嘗試著說一說強名稱的機制。

首先,你通過SN.exe獲得一個公鑰和一個密鑰。

然后,使用公鑰對程序集的可執(zhí)行文件(不包括DOS頭、PE頭等)進行哈希算法,得到一個文件散列值。

最后,使用密鑰對文件散列值進行加密,得到一個密文。

這樣,最后的強名稱程序集里面要三樣?xùn)|西:

l 公鑰標(biāo)識(公鑰的散列值的最后八個字節(jié))

l 公鑰

l 密文

使用公鑰和程序集的可執(zhí)行文件(不包括DOS頭、PE頭等)進行哈希算法可以得到一個文件散列值,使用公鑰和密文也可以得到一個文件散列值,如果這兩個散列值完全一致,OK,驗證通過。

最后,說說公鑰標(biāo)識(公鑰的散列值的最后八個字節(jié))的作用:

l 區(qū)分程序集,上面提到過它是程序集區(qū)分彼此的四大屬性之一

l 驗證公鑰

總的來說,強名稱機制最起碼起到兩個作用:

l 區(qū)分程序集

l 避免程序集被惡意更改



標(biāo)簽:.NET中的強名稱機制