이전에 MD5에 관련된 예제를 보았다.


MD5 사용하기


이번에는 SHA256을 사용해보려고 한다.

MD5보다 짧다


이 함수를 사용하기 전에도 역시 


using System.Security.Cryptography; 을 미리 상단에 추가해줘야 한다.


그리고 다음과 같이 작성하면된다.



     public 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 ();
    }


패스워드를 123456789라고 입력했다고 가정하자.

그리고, 다음과 같이 MD5Hash 함수와 SHA256Hash 함수를 호출하였을때, 



다음과 같은 결과가 나타난다.


SHA가 훨씬 더 길게 나온다는 것을 알 수 있다.

또한, 어떠값을 변수값을 함수 내 매개변수로 넣었다고 해도 그 변수값은 변하지 않는다. 

Posted by sungho88
,

사용 전 먼저, 이것을 추가해주어야 MD5와 같은 클래스를 사용할 수 있다.


using System.Security.Cryptography;


그리고, MD5를 사용하기 위한 메소드는 다음과 같다.

   

  public string MD5Hash(string text)
    {
        MD5 md5 = new MD5CryptoServiceProvider();

        //compute hash from the bytes of text
        md5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(text));

        //get hash result after compute it
        byte[] result = md5.Hash;

        StringBuilder strBuilder = new StringBuilder();
        for (int i = 0; i < result.Length; i++)
        {
            //change it into 2 hexadecimal digits
            //for each byte
            strBuilder.Append(result[i].ToString("x2"));
        }

        return strBuilder.ToString();
    }



이렇게 하고, 임의의 텍스트를 위 함수의 매개변수에 넣어 호출하면,


예를들어 


MD5Hash("hello");


이런식으로 하면 MD5로 암호화되어 사용할 수 있다.


하지만, MD5는 이미 해킹에 위험성이 매우 높으므로 사용하지 않는것이 좋다.


MD5로 암호화한 문자열은 쉽게 복호화하여 비밀번호를 만들어낼 수 있기 때문이다.


이 사이트


위 사이트에 가면 MD5로 암호화/복호화를 너무나 간편하게 할 수 있다. 


이런것을 보면... MD5는 사용하지 않길 바란다.

Posted by sungho88
,