database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 2067 게시물 읽기
No. 2067
패스워드 암호화 입력은 어떻게하나요?
작성자
오서방(oya8852)
작성일
2005-07-01 14:32
조회수
4,709

제가 mysql만 쓰다가 mssql을 쓰려니 잘 모르겠네요

mysql에선 비밀번호 암호화 입력할때 password(custom_pwd) 이러면되는데,,

mssql에선 이구문이 안 먹히네요?? 어떻게하면 될까요?

 

이 글에 대한 댓글이 총 5건 있습니다.

컴퍼넌트로 만들어 써야 합니다.

mssql 자체에 암호화 하는 펑션은 없습니다.

 

석이님이 2005-07-01 19:01에 작성한 댓글입니다. Edit

문서화 되지 않은 함수 중에 'pwdencrypt'를 함수가 있습니다.
MS-SQL에서 사용자 계정의 비밀번호를 암호화 할때 내부적으로
사용하는 함수입니다(오래전에 읽은 내용이라 정확하지는... ㅠㅠ;)
그리고 나중의 복호화된 값과의 일치 여부는  'pwdcompare'를 사용하시면
됩니다.


문제는 암화화 된 결과를 저장하는 필드의 데이타 타입을 어떻게 정하는가
인데, 예전에 그냥 읽고 넘기 함수라 저도 궁금해서 web을 검색해 보았는데
문서화 되지 않은 함수라 그렇지 다들 다른 데이타 타입으로 결과를 저장하더군요.
제 의견으로는 원래 MS-SQL에서 사용자의 비밀번호를 저장할 때 사용하던 함수라고
하니까 master.sysusers password 필드 데이타 타입 참조해서 varbinary(256)으로
하면 무리가 없을 것 같습니다..


DROP TABLE  Tpassword;
CREATE TABLE  Tpassword
(
   passwd varbinary(256)
);
GO
DECLARE @passwd varchar(20);

SET @passwd='password';


INSERT INTO  Tpassword values(pwdencrypt(@passwd));

SELECT  pwdcompare(@passwd,passwd)   --일치하는 경우
, pwdcompare('BAD'+@passwd,passwd)     -- 불일치하는 경우
   FROM Tpassword;

 

 

가을남자님이 2005-07-02 11:15에 작성한 댓글입니다. Edit

멋진걸요 ^-^

저두 문서화 되지 않은 부분 보고 있는데 ^-^

꼭 봐야 할까 싶었는데 봐야겠어요 ^------^

 

석이님이 2005-07-02 17:39에 작성한 댓글입니다. Edit

어디선가 권장하지 않는다고 들었지만..  걍 쓰고 있는 pwdencrypt..

 

declare @password    nvarchar(50)
set @password = pwdencrypt('aaa')

select pwdcompare('aaa',@password) -- 맞을때, 결과 : 1
select pwdcompare('bbb',@password) -- 틀릴때, 결과 : 0

 

전 nvarchar 로 처음 알아서 nvarchar로 쓰는데요..

nvarchar 로는 원래 password 길이의 2배가 쪼금 안되더라구요

 

이 pwdencrypt 에서 질문이 있는데요..

 

create table pwd_test (
    pwd_test_seq tinyint,
    pwd nvarchar(30),
    column3 tinyint,
    column4 datetime
    ) -- 썰렁하네요.. 테이블.. =_=;;

 

insert into pwd_test values(1,pwdencrypt('bbb'),1,getdate())
insert into pwd_test values(2,pwdencrypt('bbb'),1,getdate())
insert into pwd_test values(3,pwdencrypt('bbb'),1,getdate())

 

select * from pwd_test 를 하면.. pwd 컬럼은 아무것도 안나오고

이후의 컬럼이 한칸씩 옆으로 미뤄지고 마지막 컬럼은 짤려버립니다.

select column3 from pwd_test 하면 값은 제대로 나오고요..

 

왜이럴까요?? =_=+++

 

 

pwd_test_seq |    pwd        | column3              | column4

1                                           熦㶙蠳⩧읁늜巓俠რ 1
2                                           熦㶙蠳⩧읁늜巓俠რ 1
3                                           熦㶙蠳⩧읁늜巓俠რ    1

이렇게 나오고, datetime 컬럼이 안나옵니다. (암호와된건 길어서 중략.. ^^)

 

voy님이 2005-07-04 17:26에 작성한 댓글입니다.
이 댓글은 2005-07-04 17:34에 마지막으로 수정되었습니다. Edit

pwd_test_seq pwd                            column3 column4                                               
------------ ------------------------------ ------- ------------------------------------------------------
1            䖦募䫓퐶鏊Ⲫﻱ䟅諼艉톼ŭ劉年⃅쓣憂        1       2005-07-05 09:14:05.153
2            䖦募䫓퐶鏊Ⲫﻱ䟅諼艉톼ŭ劉年⃅쓣憂        1       2005-07-05 09:14:05.153
3            䖦募䫓퐶鏊Ⲫﻱ䟅諼艉톼ŭ劉年⃅쓣憂        1       2005-07-05 09:14:05.170

 

 

흠 되긴 되는데 ctrl d 해서 보면 밀리네요 ...

아마 글자가 깨지면서 컬럼 구분자를 건드리는 거 같은데요 ^^;

 

석이님이 2005-07-05 09:15에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
2071mssql2000에서 xpath를 사용할려고 하는데 [1]
미친곰
2005-07-02
2315
2070linux 9.x 에서 mysql 제거좀 도와주세요 ㅠ,ㅠ [1]
최병욱
2005-07-01
2053
2069테이블명앞의 [.] 의 의미는? [3]
김현숙
2005-07-01
2293
2067패스워드 암호화 입력은 어떻게하나요? [5]
오서방
2005-07-01
4709
2066SQL Server 오류 '80040e31' [1]
2005-06-30
14497
2065SQL Server 오류 '80040e31'
권남섭
2005-06-30
3456
2064한글 collate [3]
usdba
2005-06-30
3627
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다