개발/database

[mssql] 암호화 복호화 함수

가시죠 2021. 1. 17. 21:33
반응형

mssql 사용시 암호화 복호화가 필요할 경우 함수를 만들어 두면 편하게 사용할 수 있다.

아래 스크립트를 참고 해서 함수를 만든다.

 

암호화 함수

-- 암호화 함수
CREATE FUNCTION [dbo].[fn_EncryptString] ( @pClearString VARCHAR(100) )  
RETURNS NVARCHAR(100) WITH ENCRYPTION AS  
BEGIN  
    DECLARE @vEncryptedString NVARCHAR(100)  
    DECLARE @vIdx INT  
    DECLARE @vBaseIncrement INT  
      
    SET @vIdx = 1  
    SET @vBaseIncrement = 128  
    SET @vEncryptedString = ''  
      
    WHILE @vIdx <= LEN(@pClearString)  
    BEGIN  
        SET @vEncryptedString = @vEncryptedString +   
                                NCHAR(ASCII(SUBSTRING(@pClearString, @vIdx, 1)) +  
                                @vBaseIncrement + @vIdx - 1)  
        SET @vIdx = @vIdx + 1  
    END  
      
    RETURN @vEncryptedString  
  
END  
GO  

 

복호화 함수

-- 복호화 함수
CREATE FUNCTION [dbo].[fn_DecryptString] ( @pEncryptedString NVARCHAR(100) )  
RETURNS VARCHAR(100) WITH ENCRYPTION AS  
BEGIN  
  
    DECLARE @vClearString VARCHAR(100)  
    DECLARE @vIdx INT  
    DECLARE @vBaseIncrement INT  
  
    SET @vIdx = 1  
    SET @vBaseIncrement = 128  
    SET @vClearString = ''  
  
    WHILE @vIdx <= LEN(@pEncryptedString)  
    BEGIN  
        SET @vClearString = @vClearString +   
                            CHAR(UNICODE(SUBSTRING(@pEncryptedString, @vIdx, 1)) -   
                            @vBaseIncrement - @vIdx + 1)  
        SET @vIdx = @vIdx + 1  
    END  
  
    RETURN @vClearString  
  
END  
GO  

실행 방법

-- wString 라는 변수 선언
DECLARE @wString NVARCHAR(100)  
  
--==============  
-- 암호화
--==============  
SELECT @wString = dbo.ufn_EncryptString('2403-0393')  
  
--==============  
-- 복호화
--==============  
SELECT dbo.ufn_DecryptString(@wString)  


=> 결과값 : '2403-0393'  

반응형