C# nHibernate以编程方式设置数据库密码

本文关键字:置数据库密码 方式 编程 nHibernate | 更新日期: 2023-09-27 18:31:48

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

C# nHibernate以编程方式设置数据库密码

最好的

办法可能是使用 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)。