首頁  >  文章  >  資料庫  >  sql怎麼加密表

sql怎麼加密表

清浅
清浅原創
2019-05-11 13:08:594539瀏覽

sql加密表的方法:先測試環境;然後建立資料庫主金鑰;接著建立憑證以及一個對稱機密金鑰;最後加密資料即可。

sql怎麼加密表

sql server 怎麼設定表中加密

SQL Server支援資料庫級的加密(TDE)和列級的資料加密,資料庫層級的加密是在資料庫中進行的,對程式來說是透明的,開發過程中不需要做額外的操作。相對資料庫層級的加密來說,列級的資料加密過程有點麻煩,程式需要做一些額外的操作。下圖是SQL Server的加密層次結構,可以看出SQL Server的加密是分層級的,上面層級的加密保護其子層級的加密,本文說明一個使用圖中①②③④四個層次的方法來加密/解密數據的過程。

sql怎麼加密表

(1)測試環境說明

#測試使用SQL Servre 2012 R2,建立如下的資料表:

--建立測試用的使用者表

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

sql怎麼加密表

(2)建立資料庫主金鑰

資料庫主金鑰(Database Master 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查詢加密後的數據,可以看到password的內容是一串不可以閱讀的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