2014-11-24 4 views
0

저는 C# Windows Forms 응용 프로그램을 가지고 있습니다. Castle과 nHibernate 버전 2.1을 사용하고 있습니다. 우리는 보안 금고에 우리의 응용 프로그램을 설치하고 있습니다. 그러므로 우리는 암호를 암호화 된 형식으로 hibernate.cfg.xml 파일에 저장해야합니다. 그런 다음 C# 코드는 암호를 해독합니다. nHibernate connectin 문자열 암호를 코드에서 해독 된 문자열 값으로 설정하려면 어떻게해야합니까?C# nHibernate는 프로그래밍 방식으로 db 암호를 설정합니다.

답변

1

가장 좋은 방법은 당신의 hibernate.cfg.xml 파일에 정의 된 구성을 수정 Configuration.GetPropertyConfiguration.SetProperty를 사용하는 것이 아마도 :

static string DecryptPasswordMatch(Match m) 
{ 
    string password = m.Groups[1].Value; 

    password = /* some method that decrypts password */; 

    return string.Format("Password={0}", password); 
} 

당신을 'DecryptPasswordMatch는 다음과 같이 정의된다

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

데이터베이스 엔진에 따라 정규식을 약간 변경해야합니다 (SQL Server에서 작동 함).

+0

@ 앤드류 .... 감사합니다 – MikeTWebb

+0

@MikeTWebb : 물론, 기꺼이 도와 드리겠습니다. –