在ASP.NET中提供了简便的连接字符串加密方法
加密:
aspnet_iis -pef "connectionStrings" "Web.cofing绝对路径(注:不需要输入web.config)"
(aspnet_iis位于windows/Microsoft.NET/Framework/v2.0.50727 下)
如果正常会提示“成功”,此时打开Web.config会发现字符串已加密
解密:
aspnet_iis -pdf "connectionStrings" "Web.cofing绝对路径(注:不需要输入web.config)"
但是 由于安全问题 .NET提供的加密是机器相关的,也就是说加密后程序将不能移植
而我们很多时候并没有服务器的完全控制权,不能运行aspnet_iis , 所以需要通过程序加密
using
System.Configuration;
using System.Web.Configuration;
public class ConnectionString
... {
private static Configuration cfg = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
private static ConfigurationSection sec = cfg.GetSection("connectionStrings");
public static void Encrypt()//加密
...{
if (!sec.SectionInformation.IsProtected)
...{
sec.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
cfg.Save();
}
}
public static void Decrypt()//解密
...{
if (sec.SectionInformation.IsProtected)
...{
sec.SectionInformation.UnprotectSection();
cfg.Save();
}
}
}
using System.Web.Configuration;
public class ConnectionString
... {
private static Configuration cfg = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
private static ConfigurationSection sec = cfg.GetSection("connectionStrings");
public static void Encrypt()//加密
...{
if (!sec.SectionInformation.IsProtected)
...{
sec.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
cfg.Save();
}
}
public static void Decrypt()//解密
...{
if (sec.SectionInformation.IsProtected)
...{
sec.SectionInformation.UnprotectSection();
cfg.Save();
}
}
}