sql怎么加密表

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

sql怎么加密表

(3)創建證書

創建一個用來加密對稱秘鑰證書,具體代碼如下:

CREATE?CERTIFICATE?TestCert?with?SUBJECT?=?'Test?Certificate' GO

sql怎么加密表

(4)創建一個對稱秘鑰

由SQL Server加密層次結構可以看出,對稱密鑰可以通過密碼創建,也可以通過其它對稱密鑰、非對稱密鑰和證書創建。本文以證書創建一個測試用的對稱秘鑰,具體代碼如下:

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

sql怎么加密表

(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

sql怎么加密表

(6)查看加密后的數據

直接下SQL查詢加密后的數據,可以看到password的內容是一串不可以閱讀的16進制的字符。

SELECT?*?FROM?TBLUser GO

sql怎么加密表

(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怎么加密表

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享