티스토리 뷰

728x90
반응형

MSSQL 2019 Encrypt / Decrypt 대칭키 암호화 사용 (AES_256)

/* 

-- 테이블 생성
Create Table RTable (
R_ID VARCHAR(20), -- 
R_Value VARCHAR(20), -- 
R_Var varbinary(256)  NOT NULL  -- 구분

-- drop master key
Create Master key Encryption by Password = '비밀번호입력'


-- drop Certificate mCertify
Create Certificate mCertify
with Subject = 'keyCert',
EXPIRY_DATE  = '2099-12-01'; -- 만료일자
go

-- drop symmetric key mCKey

Create Symmetric Key mCKey with ALGORITHM=AES_256 Encryption by Certificate mCertify

*/

 

-- Encrypt/ Decrypt 1 - Symmetric Key 사용

-- Insert

OPEN SYMMETRIC KEY mCKey
DECRYPTION BY CERTIFICATE mCertify;  

insert into Rtable values
(
'value1',  -- R_ID
'test',       -- R_Value
EncryptByKey(Key_GUID(N'mCKey'),'test')  -- R_Var
)

 Close SYMMETRIC KEY mCKey  ;

-- select 

 OPEN SYMMETRIC KEY mCKey  
 DECRYPTION BY CERTIFICATE mCertify;  
 select *, CONVERT(varchar(max), DecryptByKey(R_Var))
from Rtable
  Close SYMMETRIC KEY mCKey  

 

-- Encrypt/ Decrypt 2 - Cert_ID 사용

 

-- Insert
insert into RTable values
(
'러21', -- R_ID
'HS',    -- R_Value
EncryptByCert(Cert_ID(N'mCertify'), 'test333453')  -- R_Var 
)

-- Select
select  *, CONVERT(varchar(255), DecryptByCert ( Cert_ID(N'mCertify'), R_Var) )as a
from RTable 

-- 또는

-- Auto Cert // 키 오픈하지 않아도 된다.
  select *,
  CONVERT(varchar(max), DecryptByKeyAutoCert ( Cert_ID(N'mCertify') , NULL ,R_Var))   
  from Rtable

 

반응형
댓글