본문 바로가기

TechLog

MD5 해시 값 얻기

MD5 해시 얻기

System.Security.Cryptography 어셈블리를 사용해서 md5 해시 값을 얻는 간단한 예제입니다.

 

 

안녕하세요 : )

 

md5는 해시 알고리즘의 일종으로, 인코딩된 내용으로부터 원래 메시지를 유추할 수 없는 특성 때문에 패스워드를 저장할 때나 기타 보안에 관련된 부분에 자주 쓰이는 알고리즘입니다.

 

닷 넷에서는 md5 이외에도 des, sha, dsa, rca 등 여러가지 암호화 알고리즘을 System.Security.Cryptography 어셈블리를 통해 제공하고 있습니다. (Kenial은 이것들 중 사용해 본 알고리즘이 md5 sha밖에 없습니다) 다른 알고리즘들도 비슷한 형태이니, 이 샘플을 보고 필요한 알고리즘을 선택해서 사용하실 수도 있습니다.

 

그럼 시작합니다.

 

 

암호화 알고리즘이 필요한데..

 

보안의 중요성은 이곳에서 더 언급하느니 입만 아프다. 아니 손가락이 아프다. 적당히 응용해서 사용하도록 하자 :

 

string strSource = "Source";

System.Security.Cryptography.MD5CryptoServiceProvider md5 =

    new System.Security.Cryptography.MD5CryptoServiceProvider();

byte[] pbSource = System.Text.Encoding.UTF8.GetBytes(strSource);

byte[] pbMD5Hashed = md5.ComputeHash(pbSource);

System.Text.StringBuilder strResult = new StringBuilder();

foreach(byte b in pbMD5Hashed)

{

    if(b<16)

        strResult.Append(string.Format("0{0:x}",b));

    else

        strResult.Append(string.Format("{0:x}",b));

}

MessageBox.Show(strResult.ToString());

 

"f31bbdd1b3e85bccd652680e16935819"가 출력되는 것을 확인할 수 있다.

 

 

정리

 

닷넷을 사용하면서 '더 이상 구현할게 없다!'라는 생각이 종종 들곤 합니다. 워낙에 방대한 프레임워크 앞에서 단지 필요한 것을 찾지 못해 헤맬 경우가 생기기까지 하죠.

 

md5 해시 함수가 필요해서 이 아티클을 읽어보셨다면, 실제로 md5 해시가 어떻게 이루어지는지도 한 번쯤은 이해하고 넘어가시는게 어떨지.. : )