gpt4 book ai didi

c# - 如何在 C# 的 connectionStrings Web.config/App.config 中仅加密和解密密码?

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:22 24 4
gpt4 key购买 nike

我有一个控制台应用程序,我应该在其中连接到 SQL Server。它受密码保护。

我只需要解密 <connectionStrings> 中的密码值标记为

<add name="ConnectionStringname" 
connectionString="Data Source=xx.x.x.xx;Initial Catalog=DbName;User ID=xxx;Password="DecryptedValueOfPasword" />

我已经尝试过这些方法,请让我知道哪一个是最好的或任何其他方法请告诉我。

方法 1:加密和解密整个 <connectionStrings>使用此命令标记

aspnet_regiis -pef connectionStrings "app.config Path"

方法 2:仅对密码值进行加密和解密

  • 第 1 步:从连接字符串中删除密码值,并在自定义标记中添加密码值。

    <add name="ConnectionStringname" 
    connectionString="Data Source=xx.x.x.xx;Initial Catalog=DbName;User ID=xxx;" />
  • 第 2 步:使用 RSA key 解密自定义标签,即使用 aspnet_regiis.exe命令。

  • 第 3 步:在代码隐藏文件中,读取解密后的密码值并将密码值附加到连接字符串中

    <add name="ConnectionStringname" 
    connectionString="Data Source=xx.x.x.xx;Initial Catalog=DbName;User ID=xxx;Password="EncryptedValueOfPasword" />

方法 3:创建类库

    public class EncryptDecryptClass {
public string Encrypt(string plainText)
{
if (plainText == null)
throw new ArgumentNullException("plainText");

//encrypt data
var data = Encoding.Unicode.GetBytes(plainText);
byte[] encrypted = ProtectedData.Protect(data, null, Scope);

//return as base64 string
return Convert.ToBase64String(encrypted);
}

public string Decrypt(string cipher)
{
if (cipher == null)
throw new ArgumentNullException("cipher");

//parse base64 string
byte[] data = Convert.FromBase64String(cipher);

//decrypt data
byte[] decrypted = ProtectedData.Unprotect(data, null, Scope);
return Encoding.Unicode.GetString(decrypted);
}
}

最佳答案

首先我不明白为什么你只需要解密密码值?连接字符串的其他部分表示安全信息,如数据库名称或用户 ID。所以你必须加密整个连接字符串,而不仅仅是它的一部分。

方法 1 是最佳选择,因为它具有以下优点:

  1. 您无需为加密/解密编写任何自定义代码。
  2. 您无需修改​​代码,.net framework 会自动解密连接字符串。
  3. 管理员将能够通过运行 aspnet_regiis -pd "connectionStrings" 来解密来自服务器框的连接字符串
  4. 你可以import/export RSA key container如果您有服务器场,则在服务器之间

关于c# - 如何在 C# 的 connectionStrings Web.config/App.config 中仅加密和解密密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33361292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com