MS-SQL에서 내부적으로 지원하는 문서화되지 않은 문자열 함수인 PWDENCRYPT와 PWDCOMPARE를 통해 암호화 기능을 구현할수 있다.
<사용예제>
' 테이블을 생성한다, 암호화할 컬럼은 VARBINARY 타입으로 한다.
CREATE TABLE MEMBER
(
UserId VARCHAR(25),
UserPwd VARBINARY(100)
)
' 데이터를 입력한다. 암호화할 컬럼은 PWDENCRYPT메소드를 이용해서 넣는다.
INSERT INTO MEMBER (UserId, UserPwd)
VALUES ('smith', PWDENCRYPT('1234'))
' 해당아이디를 가진 회원의 암호화된 비밀번호 컬럼과 입력한 문자열 비밀번호를
' PWDCOMPARE(입력문자열, 컬럼명) 메소드를 이용해 비교한다.
' 둘이 같으면 1 (true), 틀리면 0 (false)를 리턴하게 된다.
' 그리고 원문이나 암호문 둘 중 하나가 NULL 이면 NULL을 리턴하게 된다.
SELECT PWDCOMPARE('1234', UserPwd)
FROM MEMBER WHERE UserId='smith' ' 결과 : 1
결과를 살펴보면 대소문자는 구분하지 않음을 알 수 있다. 암호문의 경우 위에서 살펴본대로 대소문자를 분명 다르게 비교하였으나, PWDCOMPARE 함수에서는 대소문자를 무시하였다.
또한, 실행 결과를 보면 형태는 원문의 길이에 상관없이 30~35자 사이의 거의 일정한 길이의 암호문을 출력하는 것을 볼 수 있다. 테스트 결과 원문의 길이가 varchar 기준으로 128자를 넘었을 경우 에러를 발생 하였다.
'프로그래밍 > DataBase' 카테고리의 다른 글
"이러려고 데이터 과학자 됐나" 데이터 관리의 11가지 어두운 비밀원문보기:https://www.itworld.co.kr/news/242939?page=0,1#csidx82bff532382199ebc486939ae73a2c7 (0) | 2022.07.07 |
---|---|
[MS-SQL] with(nolock) (0) | 2022.06.02 |
[MSSQL] JSON_MODIFY (0) | 2022.03.24 |
[MSSQL] PIVOT SUM FOR IN PIVOT_TABLE, PIVOT을 이용하여 세로를 가로로 변환 방법(행 열 변환) (0) | 2022.03.21 |
데이터 리터러시( Data literacy ) (0) | 2022.02.23 |