C# 在Windows注册表中存储加密数据

C# 在Windows注册表中存储加密数据,c#,registry,password-encryption,C#,Registry,Password Encryption,能否在Windows注册表中存储加密密码 我必须找到一种方法在本地计算机的注册表中存储连接字符串(其中将包含MIcrosoft SQL Server数据库的密码) 我在这里(和其他地方)看到了一些关于加密数据然后将其存储在注册表中的建议,以及对解密执行相反操作的建议(从注册表读取值,然后使用应用程序/程序对值进行解密),但是注册表能否存储(比如)128位加密可能使用的所有字符(基本上,它可以存储非字母数字字符)。网络上有很多资源可以帮助您实现这一点。例如,您可以使用AES对字符串进行加密和解密。

能否在Windows注册表中存储加密密码

我必须找到一种方法在本地计算机的注册表中存储连接字符串(其中将包含MIcrosoft SQL Server数据库的密码)


我在这里(和其他地方)看到了一些关于加密数据然后将其存储在注册表中的建议,以及对解密执行相反操作的建议(从注册表读取值,然后使用应用程序/程序对值进行解密),但是注册表能否存储(比如)128位加密可能使用的所有字符(基本上,它可以存储非字母数字字符)。

网络上有很多资源可以帮助您实现这一点。例如,您可以使用AES对字符串进行加密和解密。我发现了一个很好的示例

微软也在谈论如何保护自己,甚至还有一些想法

通过我在网上的快速浏览,我建议创建一个自定义配置,作为一个嵌入式资源,希望没有人可以访问,然后在您的配置文件中引用它,如下所示

<?xml version='1.0' encoding='utf-8'?>
<configuration>
    <connectionStrings configSource="connections.config"/>
</configuration>

有关此配置的更多信息,请访问:

这样,您就不必与计算机访问受限的人打交道,比如在商业领域,抱怨他需要管理员来安装程序:)

希望这有帮助


快乐编码

您可以使用CryptProtectData加密,它不需要密钥。然后使用数据类型为REG_BINARY的RegSetValueEx将其保存在注册表中。

此外,除非您有一个安全的地方来存储加密密钥,否则加密对您没有任何好处。你需要弄清楚你想防御什么。看见