加密& lt; appSettings>网页上的标签.配置文件

本文关键字:标签 配置文件 网页 lt appSettings 加密 | 更新日期: 2023-09-27 18:10:20

我最近看到了这篇文章,它描述了在网络上加密connectionString标签的过程。配置文件:

http://chiragrdarji.wordpress.com/2008/08/11/how-to-encrypt-connection-string-in-webconfig/

我使用相同的方法加密web中的appSettings标记。包含加密密钥的配置文件。

我的问题是,如果我把项目交给其他人,他们将在不同的机器上运行它,他们是否能够使用相反的过程来解密web中的appSettings标签。使用aspnet_regiis工具配置文件?如果不是,这个项目在他的机器上还能运行吗?

这是我如何在我的代码中检索加密密钥:

string block_size = ConfigurationManager.AppSettings["rgbIV"];
string encryption_key = ConfigurationManager.AppSettings["key"];

加密& lt; appSettings>网页上的标签.配置文件

文档确认依赖于加密提供商,我可能是正确的:

http://www.asp.net/web-forms/tutorials/data-access/advanced-data-access-scenarios/protecting-connection-strings-and-other-configuration-information-vb

注意:由于我们正在使用DPAPI提供程序,它使用特定于计算机的密钥,因此您必须从提供网页的同一台机器上运行aspnet_regiis.exe。例如,如果您在本地开发机器上运行这个命令行程序,然后上传加密的Web。配置文件到生产服务器,生产服务器将无法解密连接字符串信息,因为它是使用特定于开发机器的密钥加密的。RSA提供程序没有此限制,因为可以将RSA密钥导出到另一台机器。

因此RSA使用了一些密钥-如果没有这些密钥,第三方将拥有无用的数据。

有两种类型的加密:对称和非对称。

如果你发布一个加密版本的web。配置对称加密实际上不可能解密,因为它是特定于机器的(在一台机器上加密,只能在该特定机器上解密,甚至只能由特定用户解密)。

非对称加密(RSA)允许您安全地共享web.config。如果您提供了私钥,收件人将能够解密内容。如果您不共享私钥,那么除了随机垃圾之外,几乎不可能得到任何东西。