2014-11-24 65 views
0

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

回答

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)。

+0

@Andrew ....谢谢 – MikeTWebb 2014-11-25 20:31:22

+0

@MikeTWebb:当然,很乐意提供帮助。 – 2014-11-25 20:31:52

相关问题