닷넷 프레임워크에 있는 System.Security.Cryptography클래스를 이용해서 문자열을 해시코드로 바꾸는 방법을 소개해드리겠습니다.
일반적으로 해시코드로 변환된 값은 다시 복호화 할 수 없습니다.
그래서 민감한 내용을 DB에 저장할 때 평문을 저장하는 것 보다 해시코드값으로 저장해서 프로그램을 짜는데. 닷넷에는 이 해시알고리즘을 자체적으로 지원해서 개발하기가 무척 편리합니다.
해시함수로는 일반적으로 MD5, SHA가 있습니다. 그리고 SHA는 SHA-224, SHA-256, SHA-384, SHA-512로 변형된 SHA-2가 있고, SHA - 0 을 변형한 SHA-1 이 있습니다.
닷넷에서는 MD5, SHA-1, SHA-256, SHA-384, SHA-512를 지원합니다.
닷넷 비베에서는 이렇게 사용하면 됩니다.
먼저
Imports System.Security.Cryptography 로 네임스페이스로 선언해주면 좋습니다.
제가 만든 메서드 입니다.
Private Function GetHashKey(ByVal Code As String) As String
‘해시 알고리즘을 나타낼 객체 선언
Dim Hash As HashAlgorithm
‘해시코드를 바이트 형식으로 전환시 사용될 바이트 배열변수 선언
Dim HashBytes() As Byte
‘문자인코딩 처리
Dim UNIEncoding As New System.Text.UnicodeEncoding
'---사용자가 원하는 해시알고리즘 사용한다.------
'Hash = New SHA1CryptoServiceProvider
'Hash = New MD5CryptoServiceProvider
'Hash = New SHA256Managed
'Hash = New SHA512Managed
‘Hash = New SHA384Managed
‘--------------------------------------
'해시알고리즘 객체 생성
Hash = New SHA384Managed
‘입력한 문자를 해시바이트로..
HashBytes = Hash.ComputeHash(UNIEncoding.GetBytes(Code))
'해시값 리턴
Return Convert.ToBase64String(HashBytes)
'해시배열(지우기)
Array.Clear(HashBytes, 0, HashBytes.Length)
End Function
이렇게 사용하면 됩니다. 너무 간단하죠..
그리고 해시알고리즘은 원하는 것을 주석해제 하면 됩니다.
이 소스는 SHA384를 사용했습니다.
사용법은
Dim HashCode as String= GetHashKey(“안녕하세요”)
이렇게 하면 “안녕하세요”를 SHA384알고리즘으로 해시코드를 리턴해줍니다.