在App.config中加密密码

时间:2011-04-02 11:31:06

标签: c# entity-framework ado.net

我想加密连接字符串中的密码。当我连接到DB时,连接字符串公开存储在App.config中,我需要找到一种方法来保持只加密密码。

4 个答案:

答案 0 :(得分:21)

让我们说这是你的连接字符串:

<connectionStrings>
    <add name="cs" connectionString="Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=XXSDFASFDKSFJDKLJFDWERIODFSDFHSDJHKJNFJKSD;"/>
</connectionStrings>

然后你可以这样做:

string myCs = System.Configuration.ConfigurationManager.ConnectionStrings["cs"].ConnectionString;

System.Data.SqlClient.SqlConnectionStringBuilder csb = new System.Data.SqlClient.SqlConnectionStringBuilder(myCs);
csb.Password = EncDecHelper.Decrypt(csb.Password);
myCs = csb.ToString();

您可以使用此处的示例撰写EncDecHelper.DecryptEncrypt and decrypt a string

答案 1 :(得分:19)

使用connectionStrings配置部分并加密整个部分 - 而不仅仅是密码。

这样更安全,因为您的应用配置将不再具有纯文本的服务器名称和用户名。

在MSDN上为RSADPAPI加密配置部分的操作方法文档。

答案 2 :(得分:0)

作为其他答案的补充,使用Source Control中的文件作为模板,并仅使用dev / test加密的连接字符串,以便在dev / test中起作用,是否更好?

对于生产环境(或应用程序部署到的其他环境),加密的凭据文件将分别生成为指定的模板格式,分别进行管理/更新/部署,并应用了适当的安全权限,除DBA / DevOps。

答案 3 :(得分:-1)

在加载应用程序之前,可能会从配置中解密连接字符串。