上面是我的IIS配置,我在“默认网站”下新增了一个虚拟目录作为应用程序的根,路径在“F:\aspnet\chap01”,该目录下有一个 Web.config配置文件。现在我要加密这个配置文件中的<connectionStrings>节点,让我的数据库配置信息不容易直接 让人看到。
<connectionStrings>
<add name="myConnString" connectionString="server=A4D5DF939A4F4C2\SQLSERVER2;database=MYDATABASE;uid=sa;pwd=sasa"/>
</connectionStrings>
可以看到,这里我们直接将数据库的用户名和密码显示,如果我们直接将这个程序发布,那么别有用心的人就可以窥探到我们的数据库。
我们执行下面的命令
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis -pe "connectionStrings" -app "/chap01" -prov "RsaProtectedConfigurationProvider"
其中-pe表示我们要加密,-app后面指定了我们所要用到的应用程序
加密后的<connectionStrings>节点
<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>djYj3i988FG5ED6wu04F75wthI8dwpVKholfpoiwc+L8JTw4cz/Y/76CdUqrYBqNQstTDkJsU8spKdiEKONNP+fslcTPAWM/YTkXLwKvmn5qywmUep02XfulaV+VWwJwfrH6arn/ElYTJ++jABO5P0DRnto6bPTGQj4XS9+bvoE=</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>7IhYh2NqR4xgLBvzEMNs8ZfBnpWOM8GoGKxCS8IabFA4uZj84gT0Z2MjBZGsZjKL7vpT49XvXhtKDlpJ/DOd6ArdtV+PJJRyhq2QRHb3Ba5XovT1+L1RfhDjy4tRgPzlZT6caNUPDiV4ej8NXSqS/f4FBBh8s8Htc76kppJkAB/F2mjauohipSnSnfCsJ8DcLqLkKBcOhq7EY9L7cKbvSNf3C2MHxguEywckuy7V8h4=</CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>
Web应用程序可以自动执行解密,所以我们在调用的时候并不用担心解密的问题,例如我们要查看数据库连接参数,可以直接使用:
public string GetConnectString()
{
string GetConnectString = ConfigurationManager.ConnectionStrings["myConnString"].ConnectionString;
return GetConnectString;
}
要解密Web.config中的加密字符串回明文显示,只需使用:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis -pd "connectionStri
ngs" -app "/chap01"
文章来源: