C#winfrom config 的加密(RSAProtectedConfigurationProvider和DataProtectionConfigurationProvider)

Web應用通常使用web.config存儲數據庫連接信息及應用的一些基礎配置信息。爲了安全性,我們採用一些加密手段來加密一些敏感信息,比如數據庫連接字符串。

.NET 自帶了一個aspnet_regiis的程序,可以幫助我們實現對web.config的加密和解密。

1.加密

1)導航到aspnet_regiis.exe目錄下

[plain] view plain copy
  1. cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319  

2)加密

[plain] view plain copy
  1. C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis.exe -pef "connectionStrings" "D:\publish"  
  2. Microsoft (R) ASP.NET RegIIS 版本 4.0.30319.33440  
  3. 用於在本地計算機上安裝和卸載 ASP.NET 的管理實用工具。  
  4. 版權所有(C) Microsoft Corporation。保留所有權利。  
  5. 正在加密配置節...  
  6. 成功!  

-pef 代表加密,connectionStrings代表的是要加密的配置節,D:\publish代表要加密的web.config所在的目錄

加密之後的connectionStrings:

[html] view plain copy
  1. <connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">  
  2.     <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"  
  3.       xmlns="http://www.w3.org/2001/04/xmlenc#">  
  4.       <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />  
  5.       <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">  
  6.         <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">  
  7.           <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />  
  8.           <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">  
  9.             <KeyName>Rsa Key</KeyName>  
  10.           </KeyInfo>  
  11.           <CipherData>  
  12.             <CipherValue>FeMnXLCJptn7uRq2ZMRLRd7X2j/1sZeT99WypfKFlp2+FXe8jCUJCXlf86t/Q9R3CtnaspGiprqIMwwshZHAKo+E+6rhzlhGyLrizqLNY9kfol/ncbC+jkbX72eu6sZSE42dmsN388amxh75WS9Z/stHdg91I5Nfi6LmQUKFSfmrljEULYeyGMyKsW487jFkTvRcyApZawVlSb941hx6cfbxhlmjrIaTDKOXyiKFptiV8Qs7GsgvRL4L2wbKRUqp7k3po82l/ovVqmjv39SuMOv+ZdwCUi4ZAoQUvluX3VeIF+K2S8VK61v4sGZvCHqRZO72mQsgk/SovIRYGsxQ/Q==</CipherValue>  
  13.           </CipherData>  
  14.         </EncryptedKey>  
  15.       </KeyInfo>  
  16.       <CipherData>  
  17.         <CipherValue>mYKo+/TqmqRumdDTN3+zWgi+wXbBnKMowc77uE/IF2/f9ZcyjHuRRJtmIu1t/kFtX4zYON/EFf8yigDGVk4QpNblMUPTMU1CV0v8KHLvb08iZetf0ZIWpA3LB3so2npKUTl4LcXzIIIjuLhYLfxvuEJJdg0WuYyw4Yqxwn5NwuierX26gl73LCxdKUT3LMAX+OgWW2j4evhJ5YhvCLe5I8yo8xrGrpkAvUMf8YYGxWfAqyVQPklG20lFvZ0tMzGJ</CipherValue>  
  18.       </CipherData>  
  19.     </EncryptedData>  
  20.   </connectionStrings>  
加密前的連接字符串:
[html] view plain copy
  1. <connectionStrings>  
  2.     <add name="sqlConnStr" connectionString="server=localhost;database=HibernateDB;uid=sa;pwd=1234"  
  3.       providerName="System.Data.SqlClient" />  
  4.   </connectionStrings>  
2.解密

有加密自然有解密,解密其實非常簡單,使用如下命令即可:

[plain] view plain copy
  1. C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis.exe -pdf "connectionStrings" "D:\publish"  
  2. Microsoft (R) ASP.NET RegIIS 版本 4.0.30319.33440  
  3. 用於在本地計算機上安裝和卸載 ASP.NET 的管理實用工具。  
  4. 版權所有(C) Microsoft Corporation。保留所有權利。  
  5. 正在解密配置節...  
  6. 成功!  

說明:

1)加密後無需修改代碼IIS可以直接讀取配置信息。

2)從其他已加密的文件裏拷貝加密字符替換未加密文件的配置節,IIS將無法正確讀取配置信息。

3)aspnet_regiis.exe在使用前先確保iis已安裝,並且aspnet_regiis已安裝

4)確保cmd是以系統管理員身份啓動,否則執行效果如下:

[plain] view plain copy
  1. C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis.exe -pef "connectionStrings" "D:\publish"  
  2. Microsoft (R) ASP.NET RegIIS 版本 4.0.30319.33440  
  3. 用於在本地計算機上安裝和卸載 ASP.NET 的管理實用工具。  
  4. 版權所有(C) Microsoft Corporation。保留所有權利。  
  5. 正在加密配置節...  
  6. 執行 connectionStrings 的配置節處理程序時出錯。  
  7.   
  8. 未能使用提供程序“RsaProtectedConfigurationProvider”加密節“connectionStrings”。提供程序返回錯誤消息: 對象已存在。  
  9.   
  10. 失敗!  

轉載自:http://blog.csdn.net/afandaafandaafanda/article/details/48164411

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章