본문 바로가기
IT/MSSQL

[MSSQL] 패스워드 암호화 함수 사용법 및 비교검증 - PWDENCRYPT / PWDCOMPARE

by 베베야 2022. 6. 26.
728x90

MSSQL에서는 패스워드 단방향 암호화 함수 PWDENCRYPT() 를 지원합니다.

암호화 방식에는 단방향과 양방향이 존재하지만 암호(패스워드)는 복호화가 불가능 해야하기 때문에 단방향 함수를 사용해야합니다.  단방향 함수를 사용하여 암호화된 해시값을 비교할 수 있도록 PWDCOMPARE()함수를 제공하고 있으니 해당 패스워드가 맞는지 확인해 보시면 됩니다.


간단한 실습을 통해서 단방향 암호화와 검증 방법에 대해서 알아보자.

 

1. 사용자 테이블 생성

패스워드 변환 함수(PWDENCRYPT) 사용시 varbinary로 반환되기 때문에 컬럼을 varbinary(128)로 생성

CREATE TABLE USERS (
	U_ID VARCHAR(20),
	U_PWD VARBINARY(128)
)

 

 

2. 사용자 계정 및 패스워드(PWDENCRYPT) 입력

INSERT INTO USERS VALUES('BEBE1',PWDENCRYPT('@1111'))
INSERT INTO USERS VALUES('BEBE2',PWDENCRYPT('@2222'))
INSERT INTO USERS VALUES('BEBE3',PWDENCRYPT('@3333'))

 

PWDENCRYPT() 함수를 사용하여 암호화된 해시값 입니다.

 

3. 입력받은 패스워드 검증(PWDCOMPARE)

- 사용자 BEBE1의 암호화 하기 이전의 정상 패스워드는 @1111

- PWDCOMPARE() 함수는 패스워드가 일치하면 1을, 다르면 0을 반환함

 

패스워드를 정상입력

--패스워드 정상 입력
SELECT (CASE WHEN COUNT(*) = 1 THEN '정상접속'
		ELSE '아이디 또는 패스워드를 확인하세요.'
		END) AS 검증하기
FROM USERS 
WHERE U_ID='BEBE1' AND PWDCOMPARE('@1111', U_PWD) = 1 --BEBE1 패스워드를 정상적으로 입력한 경우

 

패스워드를 잘못 입력

--패스워드 잘못 입력
SELECT (CASE WHEN COUNT(*) = 1 THEN '정상접속'
		ELSE '아이디 또는 패스워드를 확인하세요.'
		END) AS 검증하기
FROM USERS 
WHERE U_ID='BEBE1' AND PWDCOMPARE('@9090', U_PWD) = 1 --BEBE1 패스워드를 정상적으로 입력한 경우

이상으로 패스워드 단방향 암호화 함수인 PWDENCRYPT() 사용방법과 암호화된 해시값을 비교검증 하는 함수 PWDCOMPARE() 사용법에 대해서 알아보았습니다.

반응형
그리드형

댓글