Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 이벤트 중복 발생 현상
- +연산자
- DB 백업 파일 복원
- 프로그래머스
- map
- MIN
- 삼항연산자
- 자바스크립트
- 배열 중복 개수 구하기
- AWS
- fluent-ffmpeg
- reduce
- 레벨2
- Filter
- 맥에서 MSSQL
- 객체에서 value만 가져오기
- mssql
- array
- 레벨1
- 썸네일 생성
- max
- fill
- iscomposing
- substr
- Azure Data Studio
- sort
- 리액트
- indexof
- AWS EBS
- math
Archives
- Today
- Total
3은로그
[security] 데이터 암호화 및 복호화 본문
728x90
- Student 테이블 생성
1. 현재 세션에서 사용할 데이터베이스를 지정(MASTER로 지정함)
Use MASTER
GO
2. 마스터키 생성
- 데이터베이스를 위한 마스터 키를 생성하고 지정된 비밀번호로 암호화
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'str0ngP$$word'
GO
3. 인증서 생성
- SECert라는 인증서를 생성
CREATE CERTIFICATE SECert WITH SUBJECT = 'SQL BACKUP - SE'
4. 대칭 키 생성
- AES_256 알고리즘을 사용하여 DEMOSEKEY라는 대칭 키를 생성하고 앞서 생성한 SECert로 암호화합니다.
CREATE SYMMETRIC KEY DEMOSEKEY
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE SECert
5. 대칭키 열기
- CERTIFICATE SECert를 사용하여 대칭 키 DEMOSEKEY를 복호화할 수 있도록 엽니다.
OPEN SYMMETRIC KEY DEMOSEKEY
DECRYPTION BY CERTIFICATE SECert;
6. 암호화된 데이터 삽입
INSERT INTO STUDENT (fullname, mobileno, passportno)
VALUES ('SE', ENCRYPTBYKEY(key_guid('DEMOSEKEY'),'82'), ENCRYPTBYKEY(key_guid('DEMOSEKEY'),'MV774'));
7. 데이터 선택 및 복호화
- 이 SELECT 문은 STUDENT 테이블에서 모든 행을 검색하고 대칭 키 DEMOSEKEY를 사용하여 암호화된 열 (passportno 및 mobileno)을 복호화합니다. 결과 집합에서 passport_EN 및 mobile_EN으로 표시됩니다.
SELECT *,
CAST(DECRYPTBYKEY(passportno) AS VARCHAR(MAX)) AS passport_EN,
CAST(DECRYPTBYKEY(mobileno) AS VARCHAR(MAX)) AS mobile_EN
FROM STUDENT;
- 전체 코드
Use MASTER
GO
SELECT * FROM SYS.certificates
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'str0ngP$$word'
GO
CREATE certificate SECert WITH subject = 'SQL BACKUP - SE'
GO
CREATE SYMMETRIC KEY DEMOSEKEY
WITH algorithm = AES_256
ENCRYPTION BY CERTIFICATE SECert
OPEN SYMMETRIC KEY DEMOSEKEY
decryption by certificate SECert;
SELECT * from STUDENT;
INSERT INTO STUDENT (fullname, mobileno, passportno)
VALUES ('SE', ENCRYPTBYKEY(key_guid('DEMOSEKEY'),'82'), ENCRYPTBYKEY(key_guid('DEMOSEKEY'),'MV774'));
SELECT *,
CAST(DECRYPTBYKEY(passportno) AS VARCHAR(MAX)) AS possport_EN,
CAST(DECRYPTBYKEY(mobileno) AS VARCHAR(MAX)) AS mobile_EN
from STUDENT
'싱가포르 시큐어코딩 프로젝트' 카테고리의 다른 글
[DB 백업 파일 복원] Docker, Azure Data Studio 사용 (0) | 2024.01.25 |
---|---|
[Mac에서 MSSQL] M1 Mac + MSSQL + Docker + Azure Data Studio (1) | 2024.01.25 |