SQL テーブルを暗号化する方法: 最初に環境をテストし、次にデータベース マスター キーを作成し、次に証明書と対称秘密キーを作成し、最後にデータを暗号化します。
#SQL Server テーブル暗号化の設定方法
SQL Server はデータベース レベルの暗号化 (TDE) と列をサポートします。 -レベルの暗号化 データ暗号化、データベース レベルの暗号化はデータベース内で実行されます。これはプログラムに対して透過的であり、開発プロセス中に追加の操作は必要ありません。データベース レベルの暗号化と比較すると、列レベルのデータ暗号化プロセスは少し面倒で、プログラムはいくつかの追加操作を実行する必要があります。次の図は SQL Server の暗号化階層です SQL Server の暗号化は階層化されていることがわかります. 上位レベルの暗号化によって下位レベルの暗号化が保護されます. この記事では①②③④の 4 つのレベルを使用した方法を説明しますデータを暗号化/復号化するプロセスを図に示します。(1) テスト環境の説明
テストでは SQL Servre 2012 R2 を使用し、次のデータ テーブルを作成します。--テスト用のユーザー テーブルを作成します
CREATE TABLE TBLUser ( Name nvarchar(30), Password varbinary(1000), ) GO
(2) データベース マスター キーを作成します
データベース マスター キーはサービスの下にありますマスターキーの場合、暗号化はサービスマスターキーによって実行されます。これは、データベース レベルの証明書または非対称キーを作成するための暗号化を提供するために使用できるデータベース レベルのキーです。各データベースは、T-SQL ステートメントによって作成されるデータベース マスター キーを 1 つだけ持つことができます。具体的なコードは次のとおりです。
CREATE MASTER KEY ENCRYPTION BY PASSWORD ='passW@ord' GO(3) 証明書の作成
暗号化用の対称鍵証明書を作成します。コードは次のとおりです:
CREATE CERTIFICATE TestCert with SUBJECT = 'Test Certificate' GO(4) 対称キーを作成します
SQL Server の暗号化階層からわかるように、 、対称キー パスワード、または他の対称キー、非対称キー、証明書によって作成できます。この記事では、証明書を使用してテスト用の対称秘密キーを作成します。具体的なコードは次のとおりです:
CREATE SYMMETRIC KEY TestSymmetric WITH ALGORITHM = AES_256 ENCRYPTION BY CERTIFICATE TestCert GO(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(6) 暗号化データの表示
SQL を直接実行して暗号化データをクエリします。 , パスワードの内容が判読できない 16 進文字の文字列であることがわかりました。
SELECT * FROM TBLUser GO# (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 サイトの他の関連記事を参照してください。