반응형

대칭키를 생성하고 암호화, 복호화 함수를 매번 만들어서 사용하는게 복잡하여 해당 방식을 함수화하여 필요한 값만 파라미터로 넘겨서 처리하도록 구성하였습니다.

 

 

암복호화 만들기는 아래 링크를 통해 확인 할 수 있습니다.

myhappyman.tistory.com/229

 

Mssql - 대칭키를 활용한 데이터 암복호화 처리하기

Mssql에서 암호화, 복호화 처리하기 암호화, 복호화를 하기위해서 먼저 인증서와 인증서를 통한 대칭키를 생성해야합니다. 인증서와 대칭키 생성하기 --인증서 생성 CREATE CERTIFICATE testCert --인증

myhappyman.tistory.com

 

 

대칭키 열기

프로시저를 활용하여 대칭키를 열수 있도록 생성합니다.

CREATE PROCEDURE OpenKeys
AS
BEGIN
    BEGIN TRY
        OPEN SYMMETRIC KEY testKey
		DECRYPTION BY CERTIFICATE testCert
    END TRY
    BEGIN CATCH
        -- Handle non-existant key here
    END CATCH
END

 

 

 

암호화 함수 만들기

문자열 형태로 데이터를 전달받아서 암호화된 바이너리 값을 return하는 함수를 만들었습니다.

CREATE FUNCTION getTestEncryt(@str varchar(400))
RETURNS varbinary(256)
AS
BEGIN
	DECLARE @Result varbinary(256)
	SET @Result = EncryptByKey(Key_GUID('testKey'), @str)

RETURN @Result
END

 

 

 

복호화 함수 만들기

암호화와 반대로 암호화된 데이터를 받아서 복호화 처리후 캐스팅하여 return하는 함수입니다.

CREATE FUNCTION getTestDecryt(@enc varbinary(256))
RETURNS varchar(400)
AS
BEGIN
	DECLARE @result varchar(400)
	SET @result = CONVERT(varchar, DecryptByKey(@enc))

RETURN @result
END

 

 

 

사용하기

암호화 테스트

EXEC OpenKeys
INSERT INTO user_info (name, phone) VALUES ('test', dbo.getTestEncryt('010-1234-1234'));

프로시저 OpenKeys를 사용 후 암호화된 데이터를 삽입합니다.

 

 

복호화 테스트

EXEC OpenKeys
SELECT
	seq,
	name, 
	phone,
	dbo.getKisaDecryt(phone) as 'decryptPhone'
FROM user_info;

함수를 만들고 사용할 때, 'getTestDecryt'은(는) 인식할 수 없는 기본 제공 함수 이름입니다. 와 같은 오류가 발생했는데, dbo.를 붙여주고 정상적으로 사용되는 모습을 확인했다.

 

반응형