보편적인 암호화 알고리즘인 md5를 이용해 mssql 2000 에 저장된 사용자 패스워를 암호화 하고자 합니다.
그런데 2000 에서는 md5가 안되더군요. 그렇다고 db 를 2005 로 바꾸기엔 대형공사라..
여하튼 2000에선 md5가 안된다는걸 여태 몰랐습니다. ㅡㅡ;;
구글 사마의 도움을 받아 겨우 mssql 2000에서 사용할수 있는 md5.dll 화일을 발견했습니다.
혹시 필요하신분들이 있을듯 해서 글을 남겨 둡니다.


mssql 2000
자체적으로 md5를 지원하는 함수가 없다.
그래서 지원하는 dll 화일을 등록한다던지의 방법을 사용해야 한다.
http://www.codeproject.com/KB/database/xp_md5.aspx
에서 관련 dll 화일을 회원가입후 받아볼수가 있다.

등록은 C:\Program Files\Microsoft SQL Server\MSSQL\Binn 과 같은 MSSQL 실행화일 디렉토리에
다운로드한 xp_md5.dll 를 복사한후 아래의 문장을 실행하자

USE master;
EXEC sp_addextendedproc 'xp_md5', 'xp_md5.dll'

그후 사용자 함수로 사용하기 위해
사용할 DB에 아래의 함수를 추가 한다.
CREATE FUNCTION [dbo].[fn_md5] (@data TEXT)
RETURNS CHAR(32) AS
BEGIN
DECLARE @hash CHAR(32)
EXEC master.dbo.xp_md5 @data, -1, @hash OUTPUT
RETURN @hash
END


mssql 2005
자체적으로 md5를 지원한다. 다만 일반적인 프로그래밍에서의 md5 변환값과 동일하게 맞춰주기 위해
소문자처리등의 추가 변환이 필요하다
SubString(master.dbo.fn_varbintohexstr(HashBytes('MD5', 필드명 또는 문자열)), 3, 32)
만약 위에서 언급한 함수를 등록해서 사용하려면 2000과 똑같은 과정을 거치서 스칼라 함수로 등록하면된다.
2009/07/16 19:40 2009/07/16 19:40

Trackback Address :: https://youngsam.net/trackback/575