허당 레몬도리
http://www.ensimple.net/enSimple/show.aspx?cnum=635&b_id=study_csharp&page=1

이전의 글에서는 aspnet_regiis 유틸리티를 이용하여 특정 웹 어플리케이션의 web.config를 암/복호화 하는 방법에 대해 소개했다.
http://www.ensimple.net/enSimple/show.aspx?cnum=87&b_id=study_csharp&page=1

그럼 윈도우 어플리케이션의 구성파일 app.config는어떻게 암호화하나 ?
connectionStrings와 같이 DB 연결 문자열 정보를 가진 섹션은 암호화해 두어야 할 것이다. 반드시...
이 경우에 아래와 같은 윈도우가 머신 수준에서 기본 제공하는 암호화 프로바이더, "RsaProtectedConfigurationProvider" 또는 "DataProtectionConfigurationProvider"를 동일하게 사용할 수 있다.
(machine.config에 명시되어 있음)

private void EncryptConfiguration()
        {
            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            ConfigurationSection section = config.GetSection("connectionStrings");
            if (section != null)
            {
                if (!section.IsReadOnly())
                {
                    if (section.SectionInformation.IsProtected == false)
                    {
                        section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");
                        section.SectionInformation.ForceSave = true;
                        config.Save(ConfigurationSaveMode.Full);
                    }
                }
            }
        }


복호화 하고 싶다면, section.SectionInformation.UnprotectSection(); 메서드를 사용하면 되겠다..

또 다른 방법으로, aspnet_regiis를 이용해서 app.config를 암호화 할 수도 있다.
app.config를 web.config로 이름 변경하여 암호화한 후, 다시 이름을 원래대로 돌려서 사용하는 방법이다.

cd C:\Windows\Microsoft.NET\Framework\v2.0.50727
aspnet_regiis -pef "connectionStrings" "C:\inetpub\wwwroot\WebApp"
aspnet_regiis -pef "appSettings" "C:\inetpub\wwwroot\WebApp"

복호화
aspnet_regiis -pdf "connectionStrings" "C:\inetpub\wwwroot\WebApp"
aspnet_regiis -pdf "appSettings" "C:\inetpub\wwwroot\WebApp"

요건....왠지 이름을 바꾸고 하는 것이 모냥 빠지지 않나?...... -_-
profile

허당 레몬도리

@LemonDory

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!