网上的方法都很烂,可用性很低,其实对XX.config的连接字串加密用两个静态的方法就可以解决
加密
static void EncryptConfig(Configuration config)//加密
{
string keytype= "RsaProtectedConfigurationProvider"; // 加密类型
ConfigurationSection section = config.ConnectionStrings;
if ((section.SectionInformation.IsProtected == false) &&(section.ElementInformation.IsLocked == false))
{
section.SectionInformation.ProtectSection(keytype);
section.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Full);
}
}
解密
static void DecryptoConfig(Configuration config)//解密
{
ConfigurationSection section = config.ConnectionStrings;
if ((section.SectionInformation.IsProtected == true) &&(section.ElementInformation.IsLocked == true))
{
section.SectionInformation.UnprotectSection();
section.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Full);
}
}
应用
Configuration config = null;
config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
EncryptConfig(config);//加密
DecryptoConfig(config);//解密
备注
需要引用System.Configuration