제가 mysql만 쓰다가 mssql을 쓰려니 잘 모르겠네요
mysql에선 비밀번호 암호화 입력할때 password(custom_pwd) 이러면되는데,,
mssql에선 이구문이 안 먹히네요?? 어떻게하면 될까요?
컴퍼넌트로 만들어 써야 합니다.
mssql 자체에 암호화 하는 펑션은 없습니다.
문서화 되지 않은 함수 중에 'pwdencrypt'를 함수가 있습니다. MS-SQL에서 사용자 계정의 비밀번호를 암호화 할때 내부적으로사용하는 함수입니다(오래전에 읽은 내용이라 정확하지는... ㅠㅠ;)그리고 나중의 복호화된 값과의 일치 여부는 'pwdcompare'를 사용하시면됩니다.
문제는 암화화 된 결과를 저장하는 필드의 데이타 타입을 어떻게 정하는가 인데, 예전에 그냥 읽고 넘기 함수라 저도 궁금해서 web을 검색해 보았는데문서화 되지 않은 함수라 그렇지 다들 다른 데이타 타입으로 결과를 저장하더군요. 제 의견으로는 원래 MS-SQL에서 사용자의 비밀번호를 저장할 때 사용하던 함수라고 하니까 master.sysusers password 필드 데이타 타입 참조해서 varbinary(256)으로 하면 무리가 없을 것 같습니다..
DROP TABLE Tpassword;CREATE TABLE Tpassword( passwd varbinary(256));GODECLARE @passwd varchar(20);
SET @passwd='password';
INSERT INTO Tpassword values(pwdencrypt(@passwd));
SELECT pwdcompare(@passwd,passwd) --일치하는 경우, pwdcompare('BAD'+@passwd,passwd) -- 불일치하는 경우 FROM Tpassword;
멋진걸요 ^-^
저두 문서화 되지 않은 부분 보고 있는데 ^-^
꼭 봐야 할까 싶었는데 봐야겠어요 ^------^
어디선가 권장하지 않는다고 들었지만.. 걍 쓰고 있는 pwdencrypt..
declare @password nvarchar(50)set @password = pwdencrypt('aaa')
select pwdcompare('aaa',@password) -- 맞을때, 결과 : 1select 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 熦㶙蠳⩧읁늜巓俠რ 12 熦㶙蠳⩧읁늜巓俠რ 13 熦㶙蠳⩧읁늜巓俠რ 1
이렇게 나오고, datetime 컬럼이 안나옵니다. (암호와된건 길어서 중략.. ^^)
pwd_test_seq pwd column3 column4 ------------ ------------------------------ ------- ------------------------------------------------------ 1 䖦募䫓퐶鏊Ⲫﻱ䟅諼艉톼ŭ劉年쓣憂 1 2005-07-05 09:14:05.1532 䖦募䫓퐶鏊Ⲫﻱ䟅諼艉톼ŭ劉年쓣憂 1 2005-07-05 09:14:05.1533 䖦募䫓퐶鏊Ⲫﻱ䟅諼艉톼ŭ劉年쓣憂 1 2005-07-05 09:14:05.170
흠 되긴 되는데 ctrl d 해서 보면 밀리네요 ...
아마 글자가 깨지면서 컬럼 구분자를 건드리는 거 같은데요 ^^;