【发布时间】:2016-01-26 11:16:37
【问题描述】:
我有一个控制台应用程序,我应该在其中连接到 SQL Server。它受密码保护。
我只需要解密<connectionStrings>标签中的密码值,比如
<add name="ConnectionStringname"
connectionString="Data Source=xx.x.x.xx;Initial Catalog=DbName;User ID=xxx;Password="DecryptedValueOfPasword" />
我已经尝试过这些方法,请告诉我哪种方法最好,或者任何其他方法请告诉我。
方法一:使用此命令加密和解密整个<connectionStrings>标签
aspnet_regiis -pef connectionStrings "app.config Path"
方法二:加密解密唯一的密码值
-
第 1 步:从连接字符串中删除密码值并在自定义标签中添加密码值。
<add name="ConnectionStringname" connectionString="Data Source=xx.x.x.xx;Initial Catalog=DbName;User ID=xxx;" /> 第 2 步:使用 RSA 密钥解密自定义标签,即使用
aspnet_regiis.exe命令。-
第3步:在代码隐藏文件中,读取解密后的密码值并将密码值附加到连接字符串中
<add name="ConnectionStringname" connectionString="Data Source=xx.x.x.xx;Initial Catalog=DbName;User ID=xxx;Password="EncryptedValueOfPasword" />
方法三:创建类库
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);
}
}
【问题讨论】:
标签: c# encryption configuration cryptography