shop-wiz logo
Follow Us on Facebook Follow Us on Google+ Follow Us on Twitter Follow Us on LinkedIn
제목 MSSQL 암호화 하기
등록일 2012.01.02 HIT 5010 작성자 폰돌
출처 : http://blakdown.egloos.com/4921129


1. (MySQL 에서 password() 처럼 쓸수 있는 방법 물론 복호화는 불가능하다.

/- 암호화 함수 *- SELECT PwdEncrypt('TESTDATA') ----------------------------------- -- 결과 : 0x0100B10AD5EF78506BAB878F63BE525BBF501A409E2AA4DBFCEC

/-  확인 함수 *- -- SQL : SELECT PwdCompare('TESTDATA', PwdEncrypt('TESTDATA')) ------------------------------------------------------------ -- 결과 : 1

-- SQL : SELECT PwdCompare('TESTDATA', PwdEncrypt('TESTDATA1')) ------------------------------------------------------------ -- 결과 : 0

 

2. 마스터 키 생성 -> 비대칭 키 생성 -> 대칭 키 생성

create master key encryption by password='패스워드' create asymmetric key asym_encryption_test with algorithm = rsa_1024 create symmetric key sym_encryption_test with algorithm = des encryption by asymmetric key asym_encryption_test

 

일반적으로 위와 같이 생성한다...

 

마스터키를 만들고, 비대칭키를 RSA_1024 알고리즘으로 생성하고, 대칭키를 앞에 만들어 둔 비대칭키를 암호로 하여 DES 알고리즘으로 로 생성한다.

그러나... 또라이 사장을 둔 가난한 회사의 불쌍한 개발자에게는 웹 호스팅 등등 여러가지 상황을 염려에 두어야 하므로...

DB 백업이나, 기타 등등 문제가 생겼을 경우, 복원해도 기존 암호를 복호화를 할 수 있는 키를 생성 할 수 없다.

모든 키를 패스워드로 생성하자. create master key encryption by password='패스워드' create asymmetric key asym_encryption_test with algorithm = rsa_1024 ENCRYPTION BY PASSWORD = '패스워드'

create symmetric key sym_encryption_test with algorithm = des  encryption by password = '패스워드'

 

하다보니 드는 생각... 대칭키를 패스워드로 생성하면... 비대칭키는 생성 안해도 되는거 아닌가??? 모르겠다.. 귀찮다...

키를 생성했으면 열자

open symmetric key sym_encryption_test decryption by asymmetric key asym_encryption_test

이것은 세션동안 유지 된다.

 

처음 방법대로 했으면 이렇게 열고...





패스워드를 썼으니 open symmetric key sym_encryption_test decryption by password='패스워드'

암호화 :

EncryptByKey(Key_GUID('sym_encryption_test'), '암호화 할 문자열');

복호화 : convert(varchar, DecryptByKey('암호화된 문자열))

생성되는 암호화 문자열이 들어갈 컬럼은 varbinary(128) 정도로 해 준다.





##############################################
주민번호를 이용한 id 찾기 실례

select m.mid, m.mpwd from wizmembers m,wizmembers_ind mi where PwdCompare('주민번호1', mi.jumin1) = 1 and PwdCompare('주민번호2', mi.jumin2) = 1 and m.mname='이름' and mi.mid = m.mid
댓글보기
등록된 댓글이 없습니다.

Powered by shop-wiz since 2002, e-mail:wangta69@naver.com