C#為設置裝備擺設文件加密的完成辦法。本站提示廣大學習愛好者:(C#為設置裝備擺設文件加密的完成辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是C#為設置裝備擺設文件加密的完成辦法正文
本文實例講述了C#為設置裝備擺設文件加密的完成辦法,分享給年夜家供年夜家參考。詳細完成辦法以下:
普通來講,在web.config或app.config文件裡我們常常會存儲一些敏感信息,好比connectionStrings或許appSettings,好比像上面的文件。
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<connectionStrings>
<add name="MyNwConnectionString" connectionString="Server=myServerAddress;Database=myDataBase;User Id=myUsername; Password=myPassword;"/>
</connectionStrings>
<appSettings>
<add key="User" value="myUsername"/>
<add key="Password" value="myPassword"/>
</appSettings>
</configuration>
using System;
using System.Configuration;
namespace WebConfigEncryptTest
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string user = ConfigurationManager.AppSettings.Get("User");
string password = ConfigurationManager.AppSettings.Get("Password");
string connectionString = ConfigurationManager.ConnectionStrings["MyNwConnectionString"].ConnectionString;
}
}
}
1、加密文件可使用的Provider
.NET為我們供給了一個對象aspnet_regiis.exe來對web.config文件中的敏感信息停止加密(app.config文件可以先更名為web.config,加密後再改回app.config)。你可使用兩個provider中的一個來停止加密:
System.Configuration.DPAPIProtectedConfigurationProvider:在System.Configuration.dll中,應用Windows DPAPI(Data Protection API)來停止加密,密鑰存在Windows Local Security Authority(LSA)中。
留意:當應用DPAPIProtectedConfigurationProvider時,加密文件所應用的帳號須要與運轉web application的帳號雷同,不然web application沒法解密加密的內容。
System.Configuration.RSAProtectedConfigurationProvider:在System.Configuration.dll中,應用RSA算法來停止加密(RSA算法長短對稱加密,詳細可拜見後面一篇文章C#對稱加密與非對稱加密),公鑰寄存在config文件傍邊,只要加密的盤算機有密鑰。RSAProtectedConfigurationProvider平日是默許的缺省provider。
2、加密文件的敕令
加密web.config文件可使用:
aspnet_regiis -pef section web-app-physical-dir
Encrypt the configuration section. Optional arguments:
[-prov provider] Use this provider to encrypt.
好比運轉上面的敕令就會分離對connectionStrings和appSettings中的信息停止加密:
aspnet_regiis.exe -pef "connectionStrings" "C:\myweb\HelloService"
aspnet_regiis.exe -pef "appSettings" "C:\myweb\HelloService"
加密後的web.config文件釀成:
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation targetFramework="4.0" />
</system.web>
<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData>
<CipherValue>E2fO9C0TJVxImLYQZza+fCQdDbTpNh/kOKLRsK6zcFjkgtUCl6SnMViuu/2G1NVTxqXyEWYwyK6AiCZA+feeG/AvYvmEEVopVDb0YyGeuJgEI1r8HxTl8Cv+f2EIimP7LJI+JRZVerI4MU6Ke3wxm2S/ATc73/W6eg9808f4/D6J0pp3wND4E79gBiAnBHFYQIefdJYUsmHR9z9LiIqjCllkkj/JB0kso0kGJ9i+iew1Jae5jugIN8gPxsXbCfmw6ru3I3Kbpa8Z5AllfkFA2YKrsuV3c7eLLJ0kB4lsIJIUTy3kRyA4GjdChOmlNwwffIbhwUPPxa25CiF0VAq27Q==</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>I1DWG11Iz/rq+NC9C/21B3Q22J9+IexHPH6kkWvQPeHUO6OvOWeQbk3wHALR2ql8pz0gQJFyfTypMk/xSSikFI2Dcy5mgYY3kP73bQQ83ho3O1HPw9TsRtK1G8gmVNGyQLj7iTRcoGfiYYmSibPynv1MzSV1qDXlnVfKiMqKRZ5ZPiMSMc5u3dDEL/JW1oCvAGs5tHrZU5+vgvm0yCmSuCWZbXva+iv9J35EQqs58pq+hwVo1hg1dffdupGCBykaXGl5VX3TIGc=</CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>
<appSettings configProtectionProvider="RsaProtectedConfigurationProvider">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData>
<CipherValue>WVoFIs8rSEgqKw1C0QCmePs7WK6EIoGCfdx9CTJNmABoVvoEWPnOEQwz/6Ruu0rGwa7q91KuhGILmy4NEN0padnX6FScCdEzP6CS59U3IFumYmTrD7D9ihqFO2aIL/SuBvV3D2kxhHaYGFaPuvYgsyOLf3+aYR3O/uh/k5wZxLoIeKUUrT762J3bdaK6cJWQeuOu4j2vDXEdawdwhlnK12UV8+/AXZNlFW1N3Z0RUVFX1nMSwTaIu8F3tZ9hCFbGwbTm2T0XnfDOcB6dCxCutqC8pXD36laAfiSANzAWoC+Yhf5eFSj24fX0NU6UTQB8fqLyOgWsIMLxZLKVrwnlmg==</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>5W2KhG/oETLUDptobcOM52x1qD/g9A0By/wcGXI+fm7EdcD8mT3TxsLVBVcHRBCyUO7OIHl8NyCrduRSYwyd8ggBCriQ5KrbAmW4LXrNnw/JjjCEJWPuRcRucVRfpgap2nHh6BXRXC/AU6v0GcRqy7LV8179PgGtyAa8IE1mV/w=</CipherValue>
</CipherData>
</EncryptedData>
</appSettings>
</configuration>
個中RSAProtectedConfigurationProvider是默許的缺省provider,假如想應用DPAPIProtectedConfigurationProvider,可以用-prov參數指明:
aspnet_regiis.exe -pef "connectionStrings" "C:\myweb\HelloService" -prov "DataProtectionConfigurationProvider"
aspnet_regiis.exe -pef "appSettings" "C:\myweb\HelloService" -prov "DataProtectionConfigurationProvider"
加密設置裝備擺設文件後,源法式不須要做任何修改。假如要修正或添加新的設置裝備擺設信息,須要先解密設置裝備擺設文件。豈論應用哪一種Provider,都只能在停止加密的盤算機上對設置裝備擺設文件停止解密。
3、解密文件的敕令
解密的敕令以下(解密敕令不須要-prov參數):
-pdf section web-app-physical-dir
Decrypt the configuration section.
aspnet_regiis.exe -pdf "connectionStrings" "C:\myweb\HelloService"
aspnet_regiis.exe -pdf "appSettings" "C:\myweb\HelloService"
4、總結
設置裝備擺設文件中常常會有效戶名暗碼的敏感信息,為了避免該信息洩漏,須要對設置裝備擺設文件停止加密。加密與解密可使用.NET供給的對象aspnet_regiis.exe,可以在Windows .NET的文件夾中找到它。
該對象只對web.config文件停止修正,假如要加密或解密app.config,可以先將app.config文件更名為web.config,加密或解密後再改回來。
願望本文所述對年夜家的C#法式設計有所贊助。