C#:需要帮助加密 app.config 中的连接字符串并将其保存在那里并解密并使用?
Posted
技术标签:
【中文标题】C#:需要帮助加密 app.config 中的连接字符串并将其保存在那里并解密并使用?【英文标题】:C#: Need for help on encrypting connection string in app.config and save it there and decrypting it and use? 【发布时间】:2011-01-24 10:17:51 【问题描述】:我需要有关加密app.config
中的连接字符串并将其保存在那里并解密以供使用的帮助。
【问题讨论】:
描述了参考实现here。 【参考方案1】:您可以为此使用aspnet_regiis.exe -pef
。
见Encrypting the connection string in ASP.NET V2.0
和Encrypting Web.Config Values in ASP.NET 2.0文章进一步解释。
【讨论】:
【参考方案2】:如果您想手动进行保护,可以使用ProtectedData
类。一些代码:
class ConnectionStringProtector
readonly byte[] _salt = new byte[] 1, 2, 3, 4, 5, 6 ; // Random values
readonly Encoding _encoding = Encoding.Unicode;
readonly DataProtectionScope _scope = DataProtectionScope.LocalMachine;
public string Unprotect(string str)
var protectedData = Convert.FromBase64String(str);
var unprotected = ProtectedData.Unprotect(protectedData, _salt, _scope);
return _encoding.GetString(unprotected);
public string Protect(string unprotectedString)
var unprotected = _encoding.GetBytes(unprotectedString);
var protectedData = ProtectedData.Protect(unprotected, _salt, _scope);
return Convert.ToBase64String(protectedData);
这是一个简单的测试:
static void Main(string[] args)
var originalConnectionString = "original string";
var protector = new ConnectionStringProtector();
var protectedString = protector.Protect(originalConnectionString);
Console.WriteLine(protectedString);
Console.WriteLine();
var unprotectedConnectionString = protector.Unprotect(protectedString);
Console.WriteLine(unprotectedConnectionString);
Console.WriteLine("Press ENTER to finish");
Console.ReadLine();
【讨论】:
【参考方案3】:除了@Li0liQ 的评论,您可以使用.NET Framework 2.0+ aspnet_regiis
附带的命令行程序。查看 MSDN 文档here
【讨论】:
以上是关于C#:需要帮助加密 app.config 中的连接字符串并将其保存在那里并解密并使用?的主要内容,如果未能解决你的问题,请参考以下文章
为 WinForms 应用程序加密 app.config 中的连接字符串
C# 对 App.config的appSettings节点数据进行加密