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 등은 가급적 사용 자제해야함 (호환성때문에 유지되는 함수군으로 보임)