본문 바로가기

IT/Mssql

[MSSQL] 한글 데이터 암호화/복호화 (대칭키 암호화 사용)

1. 마스터키 생성/ 백업 / 복원 / 조회

  1) 생성

     - CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Pwd_Create_Master';

  2) 백업

     - OPEN MASTER KEY DECRYPTION BY PASSWORD = 'Pwd_Create_Master';

     - BACKUP MASTER KEY TO FILE = 'C:\MasterKey' ENCRYPTION BY PASSWORD = 'Pwd_Backup_Master';

   3) 복원

     - RESTORE MASTER KEY FROM FILE = 'C:\MasterKey';

   4) 조회

     - SELECT * FROM sys.symmetric_keys

 

2. 인증서 생성 / 조회 / 삭제 

  1) 생성

     - CREATE CERTIFICATE Certificate_Create_name ENCRYPTION BY PASSWORD = 'Pwd_Create_Cert'

       WITH SUBJECT = '인증서제목', EXPIRY_DATE = '12/31/2050';

  2) 조회

     - SELECT * FROM sys.certificates;

  3) 삭제

     - DROP CERTIFICATE Certificate_Create_name;

 

3. 대칭키 생성 / 조회 / OPEN / CLOSE

   1) 생성

      - CREATE SYMMETRIC KEY Create_Key_name

        WITH ALGORITHM = AES_128

        ENCRYPTION BY CERTIFICATE Certificate_Create_name;

    2) 조회

      - SELECT * FROM sys.symmetric_keys;

    3) OPEN

      - OPEN SYMMETRIC KEY Create_Key_name DECRYPTION BY CERTIFICATE Certificate_Create_name;

    4) CLOSE

      - CLOSE SYMMETRIC KEY Create_Key_name;

 

4. 암호화 / 복호화 

    1) 암호화

      - SELECT EncryptByKey(Key_GUID('Create_Key_name'), '암호화할데이터');

    2) 복호화

      - CONVERT(varchar, DECRYPTBYKEY('복호화할데이터'));

* 암호화 된 데이터는 VARBINARY에 담아야하며, MAX로 지정해줘야 데이터가 짤리지 않음.