Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 加密的app.config在部署的计算机上失败_C#_Encryption - Fatal编程技术网

C# 加密的app.config在部署的计算机上失败

C# 加密的app.config在部署的计算机上失败,c#,encryption,C#,Encryption,我已经创建了一个应用程序,需要加密app.config中的2个连接字符串和一些appSettings 我将app.config保存为web.config,并对“ConnectionString”和“appSettings”运行asp.net aspnet_regiis-pe命令 加密工作,我可以在我的本地开发设备上运行它,但是当我尝试在新机器上移动它时,它失败了 在我的应用程序中是否需要执行额外的步骤来使用加密设置?您需要在目标计算机上运行aspnet\u regiis-pe命令来加密配置文件。

我已经创建了一个应用程序,需要加密app.config中的2个连接字符串和一些appSettings

我将app.config保存为web.config,并对“ConnectionString”和“appSettings”运行asp.net aspnet_regiis-pe命令

加密工作,我可以在我的本地开发设备上运行它,但是当我尝试在新机器上移动它时,它失败了


在我的应用程序中是否需要执行额外的步骤来使用加密设置?

您需要在目标计算机上运行
aspnet\u regiis-pe
命令来加密配置文件。应用程序在本地计算机上运行,因为您在此计算机上运行了命令。

您需要在目标计算机上运行
aspnet\u regiis-pe
命令来加密配置文件。应用程序在本地计算机上工作,因为您在此计算机上运行了命令。

我们在环境中执行此操作的方法是在MSI中清除配置(它是标记化的,仅在安装时完全写入),然后我们有自定义操作来执行“aspnet\u regiis-pe”活动(通过框架完成,但不使用命令行)


如果您没有访问终端计算机的权限,那么您将无法有效地进行加密,您将始终放弃私钥以允许对字符串进行解密-然后您只是通过不起作用的模糊性来进行安全保护。

我们在环境中这样做的方式是在MSI中清除配置(它是标记化的,只在安装时完全编写)然后我们有自定义操作来执行“aspnet_regiis-pe”活动(通过框架完成,但不使用命令行)


如果您无法访问终端计算机,那么您将无法有效地进行加密,您将始终放弃私钥以允许对字符串进行解密-然后您只是通过不起作用的模糊性进行安全保护。

aspnet\u regiis-pe使用数据保护API(也称为DPAPI)存储加密密钥,这是特定于计算机的。默认情况下,它将加密密钥存储在计算机存储中,而不是用户存储中。(例如,您不需要以将运行web应用的用户的身份运行aspnet_regiis,只需在同一个框中。)您需要在目标框上运行该命令,以便将加密密钥正确存储在DPAPI中。您可以在此处找到更多信息:


如果要在web场场景中运行,您可能希望在所有计算机上使用相同的加密配置部分。因此,您需要跨计算机共享加密密钥。上面的同一篇文章链接到RsaProtectedConfigurationProvider以及有关跨计算机共享密钥的信息。

aspnet\u regiis-pe存储encryp使用特定于计算机的数据保护API(也称为DPAPI)的加密密钥。默认情况下,它将加密密钥存储在计算机存储中,而不是用户存储中。(例如,您不需要以将运行web应用的用户的身份运行aspnet_regiis,只需在同一个框中。)您需要在目标框上运行该命令,以便将加密密钥正确存储在DPAPI中。您可以在此处找到更多信息:


如果要在web场场景中运行,您可能希望在所有计算机上使用相同的加密配置部分。因此,您需要跨计算机共享加密密钥。上面的同一篇文章链接到RsaProtectedConfigurationProvider以及有关跨计算机共享密钥的信息。

如果我无法访问clie怎么办nt机器?我已经构建了一个应用程序并将其打包。我希望最终用户能够自己运行安装程序。您需要获取服务器密钥。请看一看。我仍然不清楚将RSA密钥导出/导入到另一台机器的意义何在,这样做将不允许用户自己使用解密命令?如果我不这样做怎么办是否可以访问客户端计算机?我已经构建了一个应用程序并将其打包。我希望最终用户能够自己运行安装程序。您需要获取服务器密钥。请看一看。我仍然不清楚将RSA密钥导出/导入到另一台计算机有什么意义,这样做将不允许用户使用解密命令himself也是吗?好的,我理解正确。(在我的例子中,我使用installsheild)我会打包应用程序而不进行任何加密,在安装过程中,我会创建一个自定义操作,称为“aspnet\u regiis-pe”?是这样吗?是的,除了我不会向外抛出并调用aspnet_regiis之外,请看一下这一点,这将有助于通过框架api实现这一点。好吧,请让我正确理解。(在我使用installsheild的情况下)我会打包应用程序而不进行任何加密,在安装过程中,我会创建一个自定义操作来调用“aspnet_regiis-pe”?是吗?是的,除了我不愿意掏腰包调用aspnet_regiis之外,看看这个,它将通过框架api帮助实现这一点。