>  기사  >  데이터 베이스  >  SQL에서 테이블을 암호화하는 방법

SQL에서 테이블을 암호화하는 방법

清浅
清浅원래의
2019-05-11 13:08:594535검색

SQL 테이블을 암호화하는 방법: 먼저 환경을 테스트한 다음 데이터베이스 마스터 키를 생성하고 마지막으로 데이터를 암호화합니다.

SQL에서 테이블을 암호화하는 방법

sql 서버 테이블 암호화 설정 방법

SQL Server는 데이터베이스 수준 암호화(TDE) 및 열 수준 데이터 암호화를 지원합니다. 데이터베이스 수준 암호화는 데이터베이스에서 수행됩니다. 개발 과정에서 추가 작업이 필요하지 않습니다. 데이터베이스 수준 암호화와 비교할 때 열 수준 데이터 암호화 프로세스는 약간 번거롭고 프로그램에서 몇 가지 추가 작업을 수행해야 합니다. 다음 그림은 SQL Server의 암호화 계층을 보여줍니다. 상위 수준의 암호화는 하위 수준의 암호화를 보호합니다. ① ② ③ ④. 그림에서 데이터를 암호화/해독합니다.

SQL에서 테이블을 암호화하는 방법

(1) 테스트 환경 설명

SQL Servre 2012 R2를 사용하여 테스트하고 다음 데이터 테이블을 생성합니다.

--테스트용 사용자 테이블 생성

CREATE TABLE TBLUser 
(    
    Name             nvarchar(30),     
    Password         varbinary(1000),    
)
GO

SQL에서 테이블을 암호화하는 방법

(2) 데이터베이스 마스터 생성 The key

데이터베이스 마스터 키는 서비스 마스터 키 아래에 있으며 서비스 마스터 키로 암호화됩니다. 이는 데이터베이스 수준 인증서 또는 비대칭 키를 생성하기 위한 암호화를 제공하는 데 사용할 수 있는 데이터베이스 수준 키입니다. 각 데이터베이스에는 T-SQL 문을 통해 생성된 데이터베이스 마스터 키가 하나만 있을 수 있습니다. 구체적인 코드는 다음과 같습니다.

CREATE MASTER KEY ENCRYPTION BY PASSWORD ='passW@ord'
GO

Image 025.png

(3) 인증서 만들기

암호화를 위한 대칭 비밀 키 인증서를 만듭니다. 구체적인 코드는 다음과 같습니다.

CREATE CERTIFICATE TestCert with SUBJECT = 'Test Certificate'
GO

Image 026.png

(4) 만들기 대칭 비밀 키

SQL Server 암호화 계층 구조에서 볼 수 있듯이 대칭 키는 암호 또는 기타 대칭 키, 비대칭 키 및 인증서를 통해 생성될 수 있습니다. 이 문서에서는 인증서를 사용하여 테스트용 대칭 비밀 키를 생성합니다. 구체적인 코드는 다음과 같습니다.

CREATE SYMMETRIC KEY TestSymmetric WITH ALGORITHM = AES_256
 ENCRYPTION BY CERTIFICATE TestCert 
GO

Image 027.png

(5) 데이터 암호화

먼저 인증서 대칭 비밀 키를 연 다음 ENCRYPTBYKEY 함수를 사용합니다. 데이터를 암호화한 다음 대칭 비밀 키를 닫습니다. 구체적인 코드는 다음과 같습니다.

OPEN SYMMETRIC KEY TestSymmetric DECRYPTION BY CERTIFICATE TestCert;
INSERT INTO TBLUser values('张三', ENCRYPTBYKEY(Key_Guid(N'TestSymmetric'), '123456'));
CLOSE SYMMETRIC KEY TestSymmetric;
GO

Image 028.png

(6) 암호화된 데이터 보기

SQL을 직접 실행하여 암호화된 데이터를 쿼리해 보면, 비밀번호 내용이 읽을 수 없는 16진수 문자열임을 알 수 있습니다.

SELECT * FROM TBLUser
GO

Image 029.png

(7) 데이터 복호화

먼저 인증서 대칭 키를 연 다음 DecryptByKey 함수를 사용하여 데이터를 복호화하고 완료 후 대칭 키를 닫습니다. 구체적인 코드는 다음과 같습니다:

OPEN SYMMETRIC KEY TestSymmetric DECRYPTION BY CERTIFICATE TestCert;
SELECT Name, CAST(DecryptByKey(password) as varchar(100)) Password FROM TBLUser;
CLOSE SYMMETRIC KEY TestSymmetric;
GO

Image 030.png

위 내용은 SQL에서 테이블을 암호화하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.