微軟企業庫5.0 心得
微軟企業庫是開源的,它包含一系列類庫和可重用的組件用來幫助通用的企業級開發。企業庫能幫助你解決一些各個項目中的共同的問題。這些功能一般的系統都需要用的到,例如:日誌功能,數據校驗功能,緩存功能,異常處理功能,加密功能等等。
企業庫應用分爲三個簡單的步驟:
- 下載微軟企業庫的類庫
類庫下載地址:http://www.microsoft.com/download/en/details.aspx?id=15104
選擇第二項
- 用配置工具配置企業庫,自動生成配置文件
解壓縮類庫文件,在目錄EnterpriseLibrary5\EntLib50Src2\bin下找到EntLibConfig.exe文件
- 在代碼中應用企業庫提供的類
下面我先來介紹一下企業庫其中的幾個功能。
加密功能
數據加密的基本過程就是對原來爲明文的文件或數據按某種算法進行處理,使其成爲不可讀的一段代碼,通常稱爲“密文”,使其只能在輸入相應的密鑰之後才能顯示出本來內容,通過這樣的途徑來達到保護數據不被非法人竊取、閱讀的目的。 該過程的逆過程爲解密,即將該編碼信息轉化爲其原來數據的過程。
加密技術通常分爲兩大類:“對稱式”和“非對稱式”。
對稱式加密就是加密和解密使用同一個密鑰,通常稱之爲“Session Key ”這種加密技術目前被廣泛採用,如美國政府所採用的DES加密標準就是一種典型的“對稱式”加密法,它的Session Key長度爲56Bits。
非對稱式加密就是加密和解密所使用的不是同一個密鑰,通常有兩個密鑰,稱爲“公鑰” 和“私鑰”,它們兩個必需配對使用,否則不能打開加密文件。這裏的“公鑰”是指可以對外公佈的,“私鑰”則不能,只能由持有人一個人知道。它的優越性就在 這裏,因爲對稱式的加密方法如果是在網絡上傳輸加密文件就很難把密鑰告訴對方,不管用什麼方法都有可能被別竊聽到。而非對稱式的加密方法有兩個密鑰,且其 中的“公鑰”是可以公開的,也就不怕別人知道,收件人解密時只要用自己的私鑰即可以,這樣就很好地避免了密鑰的傳輸安全性問題。
企業庫加密應用程序模塊提供了2種方式讓用戶保護自己的數據:
- Hashingproviders: 離散加密法, 簡單來說就是把你的信息保存到內存中後用一個離散值表示並返回給程序,這樣在程序中只能看到離散值而不是明文,這樣就起到簡單的加密效果。
- SyMMetric Cryptographyproviders: 密鑰加密法. 用對稱加密方法對數據進行加密(尚未支持非對稱加密).
下面介紹Hashingproviders 中的RC2CryptoServiceProvider離散加密法:
- 打開EntLibConfig.exe
- 選擇Blocks菜單 ,單擊 Add CryptographySettings .
- 下面創建Hash Providers
點擊Hash Providers旁邊的加號選擇Add Hash Providers,選擇Add Hash Algorithm Provider
4.在彈出的對話框中選擇一個加密算法mscorlibàSysstem.Sercurity.CryptographyàMD5CryptoServiceProvider
- 點擊 File 菜單,單擊 Save,保存爲一個App.config文件,可以先保存到桌面,之後要用到它. 用記事本打開App.config,可以看到如下內容.
<configuration>
<configSections>
<section name="securityCryptographyConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.Configuration.CryptographySettings, Microsoft.Practices.EnterpriseLibrary.Security.Cryptography, Version=5.0.414.0, Culture=neutral, PublicKeyToken=null" requirePermission="true" />
</configSections>
<securityCryptographyConfiguration>
<hashProviders>
<add name="MD5CryptoServiceProvider" type="Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.HashAlgorithmProvider, Microsoft.Practices.EnterpriseLibrary.Security.Cryptography, Version=5.0.414.0, Culture=neutral, PublicKeyToken=null"
algorithmType="System.Security.Cryptography.MD5CryptoServiceProvider, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
saltEnabled="true" />
</hashProviders>
</securityCryptographyConfiguration>
</configuration>
- 要使用緩存應用程序模塊, 需要導入相應的Dll文件,在此我們要導入的是EnterpriseLibrary5\EntLib50Src2\bin 文件夾下的Microsoft.Practices.EnterpriseLibrary.Caching.dll ,將App.config文件中的內容更新到項目中,並添加usingMicrosoft.Practices.EnterpriseLibrary.Security.Cryptography引用:
源代碼如下:
static void Main(string[] args)
{
//加密後把加密字符串賦給Encrypt
//"RC2CryptoServiceProvider"類爲該加密算法的實例
string Encrypt = Cryptographer.EncryptSymmetric("RC2CryptoServiceProvider", "需要加密的字符串");
Console.WriteLine("密文:" + Encrypt);
Console.WriteLine("------------------------------------------------");
//解密後把源字符串賦給Encrypt
Encrypt = Cryptographer.DecryptSymmetric("RC2CryptoServiceProvider", Encrypt);
Console.WriteLine("原文:" + Encrypt);
Console.ReadLine();
}
運行結果:
下面介紹Hashingproviders 中的HMACMD5離散加密法:
1.下面創建Hash Providers
點擊Hash Providers旁邊的加號選擇Add Hash Providers,選擇Add Hash Algorithm Provider
2. 在彈出的對話框中選擇一個加密算法mscorlibàSysstem.Sercurity.Cryptographyà HMACMD5
- 點擊確定在彈出的對話框中選擇Create a new key
新建一個key文件
4.點擊netx ,再點擊Generate選擇生成一個密鑰
5.點擊next,選擇保存key的目錄和文件名
6. 接着是選擇模式,有User模式和Machine模式:
(1)User模式:每個應用程序有自己的唯一標識,無法訪問其他應用程序的資源.
(2)Machine模式:加密的文件只能使用在本電腦上使用,也就是說用這個模式,在其他電腦你還需要重新生成一個Key文件.
我們就選擇User模式
- 點擊finish, 點擊 File 菜單,單擊 Save,保存爲一個App.config文件,可以先保存到桌面,之後要用到它. 用記事本打開App.config,可以看到如下內容.
<configuration>
<configSections>
<section name="securityCryptographyConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.Configuration.CryptographySettings, Microsoft.Practices.EnterpriseLibrary.Security.Cryptography, Version=5.0.414.0, Culture=neutral, PublicKeyToken=null" requirePermission="true" />
</configSections>
<securityCryptographyConfiguration>
<hashProviders>
<add name="HMACMD5" type="Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.KeyedHashAlgorithmProvider, Microsoft.Practices.EnterpriseLibrary.Security.Cryptography, Version=5.0.414.0, Culture=neutral, PublicKeyToken=null"
protectedKeyFilename="C:\Documents and Settings\Administrator\桌面\key.key"
protectedKeyProtectionScope="CurrentUser" algorithmType="System.Security.Cryptography.HMACMD5, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
saltEnabled="true" />
</hashProviders>
</securityCryptographyConfiguration>
</configuration>
- 同上,在此我們要導入的是EnterpriseLibrary5\EntLib50Src2\bin 文件夾下的Microsoft.Practices.EnterpriseLibrary.Caching.dll ,將App.config文件中的內容更新到項目中,並添加usingMicrosoft.Practices.EnterpriseLibrary.Security.Cryptography引用:
2.HashCryptographer(離散加密),這種方法根據特定的算法對數據進行加密,此種加密無法被解密,只能和原來的源字符串比較,判斷是否一致。
源代碼入下:
static void Main(string[] args)
{
//加密後把加密字符串賦給Encrypt
//"HMACMD5"類爲該加密算法的實例
string Encrypt = Cryptographer.CreateHash("HMACMD5", "需要加密的字符串");
Console.WriteLine("密文:" + Encrypt);
Console.WriteLine("------------------------------------------------");
//判斷是否和源字符串匹配
Boolean isEqual = Cryptographer.CompareHash("HMACMD5", "需要加密的字符串",Encrypt);
if (isEqual)
{
Console.WriteLine("匹配成功!");
}
else
{
Console.WriteLine("匹配失敗!");
}
Console.ReadLine();
}
- 把key文件刪除後,程序出現異常: