티스토리 뷰

반응형

암호화 방법 몇 가지...

사용하기전 using System.Security.Cryptography; 추가

 

 // MD5 암호화 128bit 암호화
        public static string MD5Hash(string Data)
        {
            MD5 md5 = new MD5CryptoServiceProvider();
             byte[] hash = md5.ComputeHash(Encoding.ASCII.GetBytes(Data));

            StringBuilder stringBuilder = new StringBuilder();
            foreach (byte b in hash)
            {
                stringBuilder.AppendFormat("{0:x2}", b);
            }
            return stringBuilder.ToString();
        }

 

        // SHA256  256bit 암호화
        public static string SHA256Hash(string Data)
        {
            SHA256 sha = new SHA256Managed();
            byte[] hash = sha.ComputeHash(Encoding.ASCII.GetBytes(Data));

            StringBuilder stringBuilder = new StringBuilder();
            foreach (byte b in hash)
            {
                stringBuilder.AppendFormat("{0:x2}", b);
            }
            return stringBuilder.ToString();
        }

 

        // SHA 384
        public static string SHA384Hash(string Data)
        {
            SHA384 sha = new SHA384Managed();
            byte[] hash = sha.ComputeHash(Encoding.ASCII.GetBytes(Data));

            StringBuilder stringBuilder = new StringBuilder();
            foreach (byte b in hash)
            {
                stringBuilder.AppendFormat("{0:x2}", b);
            }
            return stringBuilder.ToString();
        }

 

        //SHA512 512bit 암호화
        public static string SHA512Hash(string Data)
        {
            SHA512 sha = new SHA512Managed();
            byte[] hash = sha.ComputeHash(Encoding.ASCII.GetBytes(Data));

            StringBuilder stringBuilder = new StringBuilder();
            foreach (byte b in hash)
            {
                stringBuilder.AppendFormat("{0:x2}", b);
            }
            return stringBuilder.ToString();
        }


기본적인 방법은 모든 암호화 방식이 같다.

다만 생성시키는 객체가 MD5냐 SHA냐의 차이일뿐

C#과 SQLSERVER의 문자가 UniCode냐 ASCII인지를 잘 알고 써야 

클라이언트와 서버간의 암호화 문자를 가지고 통신을 할수 있다.


C#이 ASCII로 받아들여 암호화 한것과 SQLSERVER이 UniCode로 받아들여 암호화한것은 완전 다른 암호 문자열이 만들어진다.(DB의 암호화 문자열이 C#에서 전송하여 저장된것이 아닌 DB안에서 만들어진 암호일경우)


고로 C#에서 비밀번호를 암호화 할때 DB서버와 인코딩 방식을 같게 해주어야 이상한 에러 없이 잘 쓸수 있을듯...

[출처] MD5, SHA 암호화 (c#)|작성자 정각

반응형
공지사항