sql加密表的方法:先測試環境;然後建立資料庫主金鑰;接著建立憑證以及一個對稱機密金鑰;最後加密資料即可。
sql server 怎麼設定表中加密
SQL Server支援資料庫級的加密(TDE)和列級的資料加密,資料庫層級的加密是在資料庫中進行的,對程式來說是透明的,開發過程中不需要做額外的操作。相對資料庫層級的加密來說,列級的資料加密過程有點麻煩,程式需要做一些額外的操作。下圖是SQL Server的加密層次結構,可以看出SQL Server的加密是分層級的,上面層級的加密保護其子層級的加密,本文說明一個使用圖中①②③④四個層次的方法來加密/解密數據的過程。
(1)測試環境說明
#測試使用SQL Servre 2012 R2,建立如下的資料表:
--建立測試用的使用者表
CREATE TABLE TBLUser ( Name nvarchar(30), Password varbinary(1000), ) GO
(2)建立資料庫主金鑰
資料庫主金鑰(Database Master Key)在服務主金鑰之下,由服務主金鑰進行加密。這是一個資料庫層級的金鑰,可以用於為建立資料庫層級的憑證或非對稱金鑰提供加密。每一個資料庫只能有一個資料庫主金鑰,透過T-SQL語句建立。具體程式碼如下:
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查詢加密後的數據,可以看到password的內容是一串不可以閱讀的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中文網其他相關文章!