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 中的连接字符串并将其保存在那里并解密并使用?的主要内容,如果未能解决你的问题,请参考以下文章

在非 ASP.Net 应用程序中加密连接字符串

为 WinForms 应用程序加密 app.config 中的连接字符串

C# 对WinForm应用程序的App.config的加密

C# 对 App.config的appSettings节点数据进行加密

加密将重新分发的 App.config 文件中的部分和/或设置

在 C# 运行时读取、写入和更新 app.config 文件中的连接字符串