기타

MSSQL , 비밀번호 등 암호화 작업 기본!

김모작자 2012. 8. 22. 11:50

1) 텍스트 -> 암호화된 텍스트

HashBytes('SHA1', '원본텍스트')

결과 : SHA1 암호화된 varbinary(20) 출력

유의사항 : 원본 텍스트의 데이터형을 정확히 파악해야한다 (n)char, (n)varchar 등에 따라 다른 값이 나온다. 

select SubString(master.dbo.fn_varbintohexstr(HashBytes('MD5', '궁시렁궁시렁')), 3, 32)

 

2) 암호화된 텍스트의 비교

where 문 등에서 그대로 비교하면 된다. 단 데이터형을 일치시켜줘야함을 유의

declare @A_ENC varbinary(20), @B_ENC varbinary(20), @C_ENC varbinary(20);

declare @A nchar(10), @B nvarchar(10);

set @A = 'aaaa';

set @B = 'aaaa';

set @A_ENC = HashBytes('SHA1', @A);

set @B_ENC = HashBytes('SHA1', @B);

set @C_ENC = HashBytes('SHA1', convert( nchar(10) , @B ));

print @A_ENC;

print @B_ENC;

print @C_ENC;

 

 

실행 결과:

0x73A56231308012C7E67B0A46956646000414A336     
0xAB1DF493E6BF8DE49A74F5D9EA8F32266343FB1D
0x73A56231308012C7E67B0A46956646000414A336

 

PWDEncrypt 등은 가급적 사용 자제해야함 (호환성때문에 유지되는 함수군으로 보임)