C#nHibernate以编程方式设置db密码

时间:2014-11-24 14:46:02

标签: c# nhibernate connection set programmatically-created

我有一个C#Windows窗体应用程序。我们正在使用带有Castle的nHibernate 2.1版。我们正在安全的保险库中安装我们的应用程序。因此,我们需要以加密格式将密码存储在hibernate.cfg.xml文件中。然后C#代码解密密码。如何将nHibernate connectin字符串密码设置为代码中的解密字符串值?

1 个答案:

答案 0 :(得分:1)

最好的办法是使用Configuration.GetPropertyConfiguration.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)。