Databases/Mssql
Mssql - 암복호화 커스텀 함수 만들기(create Function)
Park.S.W
2021. 5. 7. 17:25
반응형
대칭키를 생성하고 암호화, 복호화 함수를 매번 만들어서 사용하는게 복잡하여 해당 방식을 함수화하여 필요한 값만 파라미터로 넘겨서 처리하도록 구성하였습니다.
암복호화 만들기는 아래 링크를 통해 확인 할 수 있습니다.
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.를 붙여주고 정상적으로 사용되는 모습을 확인했다.
반응형