ホームページ  >  記事  >  データベース  >  SQLでテーブルを暗号化する方法

SQLでテーブルを暗号化する方法

清浅
清浅オリジナル
2019-05-11 13:08:594587ブラウズ

SQL テーブルを暗号化する方法: 最初に環境をテストし、次にデータベース マスター キーを作成し、次に証明書と対称秘密キーを作成し、最後にデータを暗号化します。

SQLでテーブルを暗号化する方法

#SQL Server テーブル暗号化の設定方法

SQL Server はデータベース レベルの暗号化 (TDE) と列をサポートします。 -レベルの暗号化 データ暗号化、データベース レベルの暗号化はデータベース内で実行されます。これはプログラムに対して透過的であり、開発プロセス中に追加の操作は必要ありません。データベース レベルの暗号化と比較すると、列レベルのデータ暗号化プロセスは少し面倒で、プログラムはいくつかの追加操作を実行する必要があります。次の図は SQL Server の暗号化階層です SQL Server の暗号化は階層化されていることがわかります. 上位レベルの暗号化によって下位レベルの暗号化が保護されます. この記事では①②③④の 4 つのレベルを使用した方法を説明しますデータを暗号化/復号化するプロセスを図に示します。

SQLでテーブルを暗号化する方法

(1) テスト環境の説明

テストでは SQL Servre 2012 R2 を使用し、次のデータ テーブルを作成します。

--テスト用のユーザー テーブルを作成します

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

SQLでテーブルを暗号化する方法(2) データベース マスター キーを作成します

データベース マスター キーはサービスの下にありますマスターキーの場合、暗号化はサービスマスターキーによって実行されます。これは、データベース レベルの証明書または非対称キーを作成するための暗号化を提供するために使用できるデータベース レベルのキーです。各データベースは、T-SQL ステートメントによって作成されるデータベース マスター キーを 1 つだけ持つことができます。具体的なコードは次のとおりです。

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

以上がSQLでテーブルを暗号化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。