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

时间:2014-02-21 16:58:58

标签: c# registry password-encryption

您可以在Windows注册表中存储加密密码吗?

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

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

2 个答案:

答案 0 :(得分:1)

网上有足够的资源来帮助您解决这个问题。例如,您可以使用AES加密和解密字符串。我找到了一个很好的例子AES Encryption, Dream in Code

微软还谈到了解保护自己的方法,甚至是一些想法。

Protecting Connection Information

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

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

有关此配置的更多信息,请访问:Connection Strings and Configuration Files

这样,您就不必处理有限计算机访问权限的人,例如在业务领域,抱怨他需要管理员来安装程序:)

希望这有帮助。

快乐的编码!

答案 1 :(得分:1)

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