本文是利用aspnet_regiis先生成一个RSA密钥容器,在进行分配用户(这一步可以和生成RSA密钥合成一步),下一步对web.config中的节点进行加密。调用就象我们平常的一样,不用在进行解密。下面步骤
第一步,新建个记事本,把下面的一段代码复制进去,并且保存为后缀名为.aspx的文件,<%@ Page Language="C#" %><%Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);%>;在保存为test.aspx。把这个文件拷贝到你的web目录下,和web.config同级的目录下;运行窗体显示“ NT AUTHORITY/NETWORK SERVICE”,就成功了第一步.这句代码是确定给那个用户权限。第一步就完成了。
第二步,运行cmd.exe,进入/windows/Microsoft.Net/Framework/v2.0.50727目录下(在asp.net2.0环境下).执行下面的命令
aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY/NETWORK SERVICE",这句话代码意思是生成一个RSA密钥容器,并给上面显示的用户分配权限
第三步,就是对web.config中的节点进行加密了,运行命令 aspnet_regiis -pe "connectionStrings" -app "/Myweb" ;"connectionString"就是我们要加密的节点,"/Myweb"就是我们的WEB目录了,就是我们存放web.config的文件夹名,我们要注意的是前面的"/"必须是正的不能写成反的"/",有时不能进行加密,具体原因不太清楚,我认为可能是没有生成密钥,但前面的命令执行时提示成功的,所以这就是我不懂了。但可以用这样的方式可以在进行加密aspnet_regiis -pef "待加密的字段" "网站实际路径" -prov "DataProtectionConfigurationProvider"。
对web.config的加密就完成了,在我们调用web.config中的节点时,就像我们平常的一样,就可以了,不用在解密了。
我们要 生成自己的RSA密钥容器的时候,把生成RSA密钥容器的命令里生成密钥的名字改成我们自己的,再在web.config里添加以下内容<protectedData> <providers> <add name="MyProvider" type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0. 0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d0a3a, processorArchitecture=MSIL" keyContainerName="MyKeys" useMachineContainer="true" /> </providers> </protectedData>,在授予帐户对计算机级别的“MyKeys“我们自己的RSA密钥容器的访问权限 aspnet_regiis -pa "MyKeys" "NT AUTHORITY/NETWORK SERVICE",下一步就是对web.config中的节点加密了,命令:aspnet_regiis -pe "connectionStrings" -app "/Myweb" -prov "我们自己的RSA密钥容器" ;如果我们要解密的话和加密格式一样,就是把-pe 改成-pd就可以