假设我的web.config中有一个连接部分,如此
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=xxxxxxxx;Initial Catalog=xxxxxx;Persist Security Info=True;User ID=xxxx;Password=xxxx;Enlist=false;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>
我按照here的说明加密它,它就变成了这样的
<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData>
<CipherValue>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>
到目前为止一切正常。
但是这就是事情。我使用完全相同的连接字符串部分在同一台服务器上运行了很多不同的应用程序。将加密部分复制并通过所有web.configs非常方便,但是当我尝试它时只会产生500错误。
显然,加密数据的某些内容特定于特定目录。我知道加密密钥是特定于计算机的,但是这些密钥都在同一台服务器上使用相同的密钥,所以我想知道是否有人知道更多关于加密如何工作以及为什么你不能复制 - - 从一个子目录到另一个子目录。