/* MSSQL2012부터 지원해주고 있는 SHA256, SHA512를 MSSQL 2005, MSSQL 2008에서 이용할려면 CLR을 이용해서 DLL 을 등록해서 함수를 만들어서 이용을 해야합니다. MSSQL 2012의 값과 동일하게 반환하게 DLL파일을 작업을 했습니다. 첨부되어 있는 DLL파일을 이용해서 아래의 SQL을 실행해서 등록 및 테스트 해주세요... */ --SHA256, SHA512 함수를만들데이터베이스를선택합니다. USE [master] GO --CLR환경을사용하도록설정합니다. EXEC sp_configure 'clr enabled', 1 GO RECONFIGURE GO /* -- 이미작성된SHA256함수가있으면삭제. (문자-> SHA256) DROP FUNCTION dbo.fnGetStringToSha256 GO -- 이미작성된SHA256함수가있으면삭제. (바이너리-> SHA256) DROP FUNCTION dbo.fnGetBinaryToSha256 GO -- 이미작성된SHA512함수가있으면삭제. (문자-> SHA512) DROP FUNCTION dbo.fnGetStringToSha256 GO -- 이미작성된SHA512함수가있으면삭제. (바이너리-> SHA512) DROP FUNCTION dbo.fnGetBinaryToSha512 GO -- 어셈블리삭제 DROP ASSEMBLY InnoDll GO */ -- #### 어셈블리를등록 ################################ CREATE ASSEMBLY InnoDll FROM 'C:\01_Temp\fnEnCryptSHA.dll' WITH PERMISSION_SET= SAFE GO -- #### 함수작성 ################################ -- 문자형을SHA256로반환하는함수작성 CREATE FUNCTION fnGetStringToSha256 (@Str nvarchar(1000)) RETURNS varbinary(8000) AS EXTERNAL NAME InnoDll.fnEnCryptSHA.GetStringToSha256 GO -- 바이너리형을SHA256로반환하는함수작성 CREATE FUNCTION fnGetBinaryToSha256 (@Str varbinary(8000)) RETURNS varbinary(8000) AS EXTERNAL NAME InnoDll.fnEnCryptSHA.GetBinaryToSha256 GO -- 문자형을SHA512로반환하는함수작성 CREATE FUNCTION fnGetStringToSha512 (@Str nvarchar(1000)) RETURNS varbinary(8000) AS EXTERNAL NAME InnoDll.fnEnCryptSHA.GetStringToSha512 GO -- 바이너리형을SHA512로반환하는함수작성 CREATE FUNCTION fnGetBinaryToSha512 (@Str varbinary(8000)) RETURNS varbinary(8000) AS EXTERNAL NAME InnoDll.fnEnCryptSHA.GetBinaryToSha512 GO
--#### 함수테스트 ############################################## --문자를SHA256로반환(리턴형varbinary형) SELECT dbo.fnGetStringToSha256('abc') --바이너리를SHA256로반환(리턴형varbinary형) SELECT dbo.fnGetBinaryToSha256(0x9F04F41A848514162050E3D68C1A7ABB441DC2B5) --문자를SHA512로반환(리턴형varbinary형) SELECT dbo.fnGetStringToSha512('abc') --바이너리를SHA512로반환(리턴형varbinary형) SELECT dbo.fnGetBinaryToSha512(0x9F04F41A848514162050E3D68C1A7ABB441DC2B5) |