C#为配置文件加密的实现方法
本文实例讲述了C#为配置文件加密的实现方法,分享给大家供大家参考。具体实现方法如下:
一般来说,在web.config或app.config文件里我们经常会存储一些敏感信息,比如connectionStrings或者appSettings,比如像下面的文件。
<configuration>
<system.web>
<compilationdebug="true"targetFramework="4.0"/>
</system.web>
<connectionStrings>
<addname="MyNwConnectionString"connectionString="Server=myServerAddress;Database=myDataBase;UserId=myUsername;Password=myPassword;"/>
</connectionStrings>
<appSettings>
<addkey="User"value="myUsername"/>
<addkey="Password"value="myPassword"/>
</appSettings>
</configuration>
usingSystem.Configuration;
namespaceWebConfigEncryptTest
{
publicpartialclassWebForm1:System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
stringuser=ConfigurationManager.AppSettings.Get("User");
stringpassword=ConfigurationManager.AppSettings.Get("Password");
stringconnectionString=ConfigurationManager.ConnectionStrings["MyNwConnectionString"].ConnectionString;
}
}
}
一、加密文件可以使用的Provider
.NET为我们提供了一个工具aspnet_regiis.exe来对web.config文件中的敏感信息进行加密(app.config文件可以先改名为web.config,加密后再改回app.config)。你可以使用两个provider中的一个来进行加密:
System.Configuration.DPAPIProtectedConfigurationProvider:在System.Configuration.dll中,使用WindowsDPAPI(DataProtectionAPI)来进行加密,密钥存在WindowsLocalSecurityAuthority(LSA)中。
二、加密文件的命令
加密web.config文件可以使用:
Encrypttheconfigurationsection.Optionalarguments: [-provprovider]Usethisprovidertoencrypt. 比如运行下面的命令就会分别对connectionStrings和appSettings中的信息进行加密: aspnet_regiis.exe-pef"appSettings""C:\myweb\HelloService" 加密后的web.config文件变成: 其中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,都只能在进行加密的计算机上对配置文件进行解密。 三、解密文件的命令 解密的命令如下(解密命令不需要-prov参数): Decrypttheconfigurationsection. aspnet_regiis.exe-pdf"connectionStrings""C:\myweb\HelloService" aspnet_regiis.exe-pdf"appSettings""C:\myweb\HelloService" 四、总结 配置文件中经常会有用户名密码的敏感信息,为了防止该信息泄露,需要对配置文件进行加密。加密与解密可以使用.NET提供的工具aspnet_regiis.exe,可以在Windows.NET的文件夹中找到它。 该工具只对web.config文件进行修改,如果要加密或解密app.config,可以先将app.config文件改名为web.config,加密或解密后再改回来。 希望本文所述对大家的C#程序设计有所帮助。
<configuration>
<system.web>
<compilationtargetFramework="4.0"/>
</system.web>
<connectionStringsconfigProtectionProvider="RsaProtectedConfigurationProvider">
<EncryptedDataType="http://www.w3.org/2001/04/xmlenc#Element"
xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethodAlgorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
<KeyInfoxmlns="http://www.w3.org/2000/09/xmldsig#">
<EncryptedKeyxmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethodAlgorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
<KeyInfoxmlns="http://www.w3.org/2000/09/xmldsig#">
<KeyName>RsaKey</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>
<appSettingsconfigProtectionProvider="RsaProtectedConfigurationProvider">
<EncryptedDataType="http://www.w3.org/2001/04/xmlenc#Element"
xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethodAlgorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
<KeyInfoxmlns="http://www.w3.org/2000/09/xmldsig#">
<EncryptedKeyxmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethodAlgorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
<KeyInfoxmlns="http://www.w3.org/2000/09/xmldsig#">
<KeyName>RsaKey</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>
相关文章