강의 컨설팅 트레이닝 무료진단 무료책자 마케팅편지 마케팅정보공유 다이어리 서비스제휴 고객센터

PWDENCRYPT와 PWDCOMPARE를 통해 암호화 기능
작성자 : 13 김영철
등록날짜 : 2009.01.24 23:12
3,470

MS-SQL에서 내부적으로 지원하는 문서화되지 않은 문자열 함수인 PWDENCRYPT와 PWDCOMPARE를 통해 암호화 기능을 구현할수 있다.

 

<사용예제>

 

' 테이블을 생성한다, 암호화할 컬럼은 VARBINARY 타입으로 한다. 

CREATE TABLE MEMBER
(
  UserId VARCHAR(25),
  UserPwd VARBINARY(100)
)

' 데이터를 입력한다. 암호화할 컬럼은 PWDENCRYPT메소드를 이용해서 넣는다.

INSERT INTO MEMBER (UserId, UserPwd)

       VALUES ('ssey', PWDENCRYPT('seyoung')) 

 

' 해당아이디를 가진 회원의 암호화된 비밀번호 컬럼과 입력한 문자열 비밀번호를

' PWDCOMPARE(입력문자열, 컬럼명) 메소드를 이용해 비교한다.

' 둘이 같으면 1 (true), 틀리면 0 (false)를 리턴하게 된다.

' 그리고 원문이나 암호문 둘 중 하나가 NULL 이면 NULL을 리턴하게 된다.

SELECT PWDCOMPARE('SEYOUNG', UserPwd)

       FROM MEMBER WHERE UserId='ssey'  ' 결과 : 1

 

결과를 살펴보면 대소문자는 구분하지 않음을 알 수 있다. 암호문의 경우 위에서 살펴본대로 대소문자를 분명 다르게 비교하였으나, PWDCOMPARE 함수에서는 대소문자를 무시하였다.

또한, 실행 결과를 보면 형태는 원문의 길이에 상관없이 30~35자 사이의 거의 일정한 길이의 암호문을 출력하는 것을 볼 수 있다.  테스트 결과 원문의 길이가 varchar 기준으로 128자를 넘었을 경우 에러를 발생 하였다.

 

 

===========================================================================

암호화

update users set LoginPwd=pwdencrypt('passwd12') where id=3

 

DECLARE @ClearPIN varchar(255)
DECLARE @EncryptedPIN2 varchar(255)
DECLARE @EncryptedPIN varbinary(255)
SELECT @ClearPIN = 'passwd12'
SELECT @EncryptedPIN2 =  LoginPwd   from users  where  id=3
SELECT @EncryptedPIN = CONVERT(varbinary(255), @EncryptedPIN2)
SELECT pwdcompare(@ClearPIN, @EncryptedPIN, 0)

암호가 맞으면 1을 리턴

틀리면 0 리턴

 

===========================================================================

DECLARE @inputPd varchar(12)
DECLARE @inputID varchar(12)
set @inputPd='11111'              --> 입력받은 암호
set @inputid='m57hyun'           --> 입력받은 회원아이디

 

SELECT  PWDCOMPARE( @inputPd , encPassword , 0  ) AS encCompare
From tbl_mem_main2                --> 회원테이블
where c_mem_id=@inputid

 

결과는 0,1로 표현되며 0일경우는 불일치

1인 경우는 일치입니다.

[출처] 민주가인

"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기,
각종 광고, 영업, 판매, 제안서, 전단지
반응율 3배×10배 이상 높이는 마법의 8단계 공식"
자세히보기

Comments

번호 제목 글쓴이 날짜 조회
2715 MySQL 에서 사용되는 sql문 정리 M 최고의하루 12.19 2743
2714 [ MySQL ] MySQL 기본적으로 익혀야할 과제 M 최고의하루 12.18 2501
2713 [ MySQL ] MySql4.x / PHP4.x / Apache 한글깨짐 M 최고의하루 12.18 3257
2712 [ MySQL ] MySQL 5 한글 UTF8 한글 깨짐 분석 (Windows 용) M 최고의하루 12.04 5730
2711 MySQL 명령어 정리 M 최고의하루 12.04 2388
2710 MSSQL 페이징 13 김영철 01.24 2487
2709 mssql 암호화 13 김영철 01.24 2486
2708 mysql과 mssql의 변환시 유의사항 13 김영철 01.24 2672
2707 mssql 백업방법 13 김영철 01.24 2773
2706 데이터 정보 확인방법 13 김영철 01.24 2354
2705 MS-SQL JDBC "ResultSet Can Not Re-Read Row Data" 예외 처리 방법 13 김영철 01.24 3283
2704 IDENTITY 속성 13 김영철 01.24 2160
2703 Jsp + Mssql Long타입 데이타 사용시 문제점 13 김영철 01.24 2764
열람중 PWDENCRYPT와 PWDCOMPARE를 통해 암호화 기능 13 김영철 01.24 3471
2701 MSSQL 기본값 13 김영철 01.24 3036
2700 :: 데이터베이스의 종류 :: 13 김영철 01.24 2350
2699 :: 데이터베이스의 객체 :: 13 김영철 01.24 2635
2698 :: Transact-SQL 이란 :: 13 김영철 01.24 2886
2697 :: 단순 SELECT 문 :: 13 김영철 01.24 2368
2696 :: WHERE 절 :: 13 김영철 01.24 2803
2695 :: ORDER BY, GROUP BY :: 13 김영철 01.24 2479
2694 :: 조인(Join) 이란? :: 13 김영철 01.24 2182
2693 :: 조인(Join)의 사용 예 :: 13 김영철 01.24 2342
2692 :: SELECT INTO 와 INSERT INTO :: 13 김영철 01.24 2575
2691 :: 데이터베이스의 구조 :: 13 김영철 01.24 2306
2690 :: 데이터베이스 생성 :: 13 김영철 01.24 2112
2689 :: 데이터 무결성 :: [출처] :: 데이터 무결성 :: (쇼핑몰 대박못내는 진짜이유!) |작성자 프런티어 13 김영철 01.24 3177
2688 :: 인덱스(Index) :: 13 김영철 01.24 2090
2687 :: 뷰(View) :: 13 김영철 01.24 2816
2686 :: 저장프로시저 (Stored Procedure) :: 13 김영철 01.24 2784
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취