일단 제목은 거창하게 해놨다.

최초 내가 찾고자했던 내용은 MS SQL 2012 버전에서 새로 추가된 암호화 방법의 사용법이었다.

하지만 잘못된 검색어와... 기존에 틀에 박힌 사고로 인해 삽질을 했다.

분명히 나같은 삽질을 하는 사람이 있어 주길 바라며...


HASHBYTES 란 명령어가 있다.

기존부터 존재하던 명령어인데..

이게 이번에 버전업을 하게 되었다.

참고로 내가 지칭한 버전업된 버전은 MS SQL 2012 버전이다.

다른게 아니라 알고리즘이 추가된 것이다.

PwdEncrypt의 뒤를 잇는 녀석이 나온줄 알았는데..

해쉬바이트가 업그레이드 된것이다.

다른 사람들의 글을 좀 세심하게 살폈다면 좋았을것을...


ms sql을 사용하게 한다면...

PwdEncrypt, PwdCompare 를 사용해 보셨을것이다.

하나는 암호화해주는 녀석 그리고 또 하나는 그걸 비교해주는 녀석이다.

그리고 PwdEncrypt를 사용하면 언제나 똑같은 암호임에도 불구하고 새로운 해쉬값을 제공해준다.

덕분에 PwdCompare가 아니면 유저가 입력한 데이터가 암호화되어 저장된 데이터와 동일한 값인지 확인할 길이 없다.

단방향 암호화이면서도 꽤나 강력했었던 녀석인데...

편하게 잘 썼었는데...


하지만 HASHBYTES는 조금 다르다.

일단 이녀석은 단방향 암호화 방식으로 복호화가 안된다.

누군가 용자가 나타나서 복호화할수 있을지도 모르나 안되라고 만든 물건이다.


또한

MD5나 이런걸 조금 해본분이라면 아실꺼지만

PwdEncrypt와는 다르게 매번 새로운 해쉬값을 제공해주지도 않는다.

똑같은 값을 던지면 매번 똑같은 해쉬값을 반환해준다.

그래서 PwdEncrypt랑은 좀 다르게..

하나의 명령어로 모든게 다 해결된다.

보안상의 이점은 PwdEncrypt가 더 좋은 형태를 취하고 있지만...

이미 쓸수없는 녀석이 되었으니...ㅠ


일단 친애하시는 마소님의 Url : https://msdn.microsoft.com/ko-kr/library/ms174415.aspx


SHA-256과 SHA-512는 2012버전과 2014버전에서만 지원하는걸 알수 있다.

아마 이거 관련해서 찾아보면 2005버전과 2008버전에서 사용할수 있는 방법 설명글이 제일 많이 보일것이다.

그러니 하위 버전에서의 방법은 일단 패스한다.


사용법은 간단하다.


Select HASHBYTES('알고리즘', '암호화할값')


알고리즘은 MD2 , MD4 , MD5 , SHA , SHA1 , SHA2_256 , SHA2_512 이렇게 있다.

자기가 쓰고자하는 알고리즘을 선택하면 된다.

암호화할값은 변경할 데이터가 되겠다.

기본적인 예제는 저렇게 되겠다.


응용해보자.

회원 데이터를 입력한다고 보면... (참고로 난 아이디를 UserName이라고 쓴다. Asp.Net MVC가 날 그렇게 만들었다..;;)


Insert into Users ( UserName , Pwd ) Values ( 't2t2tt' , HASHBYTES('SHA2_512' , '123456') )


이정도가 되겠다.

회원이 로그인한다고 가정한다면..


Select UserNick From Users Where UserName = 't2t2tt' And Pwd = HASHBYTES('SHA2_512' , '123456')

(HASHBYTES 구문을 빼먹어서 수정함. 2017.09.18)


이렇게 된다.

UserNick 값이 넘어오면 정상적인 회원의 로그인 성공이 되겠다.


여기서 회원이 로그인하는 경우가 PwdEncrypt랑 매우 다른... 기본적인 형태를 보여주게 된다.


하지만 실제 잘 사용되지않는게 함은정...;;

구지 DB에서 실행할 필요가 없으니..

기본틀이 다 만들어졌고...

시간이 촉박하고 최소한으로 수정을 가해야할때 잠시 쓸수는 있을것 같다.


솔직히 별거없는 내용으로 포스팅만 하나 늘려본다.




Posted by T.t.
: