我有一个C#Windows窗体应用程序。我们正在使用带有Castle的nHibernate 2.1版。我们正在安全的保险库中安装我们的应用程序。因此,我们需要以加密格式将密码存储在hibernate.cfg.xml文件中。然后C#代码解密密码。如何将nHibernate connectin字符串密码设置为代码中的解密字符串值?
答案 0 :(得分:1)
最好的办法是使用Configuration.GetProperty
和Configuration.SetProperty
来修改hibernate.cfg.xml文件中定义的配置:
var configuration = new Configuration()
.Configure();
const string connectionStringKey = "connection.connection_string";
string connectionString = configuration.GetProperty(connectionStringKey);
connectionString = Regex.Replace(
connectionString,
"Password=(.+);",
DecryptPasswordMatch);
configuration.SetProperty(connectionStringKey, connectionString);
DecryptPasswordMatch
定义为:
static string DecryptPasswordMatch(Match m)
{
string password = m.Groups[1].Value;
password = /* some method that decrypts password */;
return string.Format("Password={0}", password);
}
您必须根据数据库引擎稍微更改正则表达式(这应该适用于SQL Server)。