MSSQL 2019 Encrypt / Decrypt 대칭키 암호화 사용 (AES_256)
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