在app.config中encryption连接string

我在encryptionapp.config中的连接string时遇到问题。 我有代码将保护app.config的connectionStrings部分,但密码仍然以纯文本显示。

我需要对连接string进行encryption,因此在部署时它不是纯文本格式。 我看到类似于web.config的问题,但不是app.config。

看看这篇文章里面有一些非常有用的例子。 你基本上在寻找System.Configuration.SectionInformation.ProtectSection来帮助你在这里。

还有一个在实施保护configuration偷看

您可以轻松应用与web.config相同的解决scheme,只需将app.config重命名为web.config,使用aspnet_regiis工具进行encryption,然后将其重命名为app.config。

  1. 将app.config重命名为web.config
  2. 打开命令提示符并键入:
    %windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pef "connectionStrings" c:\<folder containing your web.config> (停止在文件夹级别,不要放在尾部“\”)
  3. 将web.config重命名回app.config

你可以在记事本中打开它来查看encryption文件。 在视觉工作室你会看到它的解密。 您可以像使用未encryption的方式一样使用连接string。

定义config文件的位置

 Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 

如果你想encryptionconnectionStringsstring

 config.ConnectionStrings.SectionInformation.ProtectSection(Nothing); 

您必须了解应用程序configuration部分

所以如果你想encryptionAppSettings

 config.AppSettings.SectionInformation.ProtectSection(Nothing); 

在这里输入图像描述

您可以使用Rijndaelalgorithm,在类System.Security.Cryptography.Rijndael实现。 这是非常强大的encryption模式,根据特定的密码将字节转换为其他字节。

看看这个例子 。

这个代码对于Model First是有用的。 1 – 创build一个这样的类。 (AADOEEntities1是一个实体模型)

 class DataContext { public static AADOEEntities1 Context; } 

2 – 把这个代码放在program.cs中

 using System; using System.Collections.Generic; using System.Collections; using System.Linq; using System.Data.Common; using System.Data; using System.Data.SqlClient; using System.Data.EntityClient; using System.Data.Metadata.Edm; using System.IO; namespace a { string providerName = "System.Data.SqlClient"; string serverName = "."; string databaseName = "AADOE"; // Initialize the connection string builder for the // underlying provider. SqlConnectionStringBuilder sqlBuilder = new SqlConnectionStringBuilder(); // Set the properties for the data source. sqlBuilder.DataSource = serverName; sqlBuilder.InitialCatalog = databaseName; sqlBuilder.IntegratedSecurity = true; sqlBuilder.UserID = "sa"; sqlBuilder.Password = "123456"; // Build the SqlConnection connection string. string providerString = sqlBuilder.ToString(); // Initialize the EntityConnectionStringBuilder. EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder(); //Set the provider name. entityBuilder.Provider = providerName; // Set the provider-specific connection string. entityBuilder.ProviderConnectionString = providerString; // Set the Metadata location. entityBuilder.Metadata = @"res://*/mdlAADOE.csdl| res://*/mdlAADOE.ssdl| res://*/mdlAADOE.msl"; EntityConnection conn = new EntityConnection(entityBuilder.ToString()); DataContext.Context = new AADOEEntities1(conn); Application.Run(new frmLogin()); } 

3 – 在app.config中设置connectionstring =“”。