卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

SQL Server數(shù)據(jù)加密的層次結(jié)構(gòu)

SQL Server支持?jǐn)?shù)據(jù)庫(kù)級(jí)的加密(TDE)和列級(jí)的數(shù)據(jù)加密。數(shù)據(jù)庫(kù)級(jí)的加密是透明的,程序無需額外操作;而列級(jí)加密則需要程序進(jìn)行一些額外操作。SQL Server的加密層次結(jié)構(gòu)分為不同層級(jí),本文將

SQL Server支持?jǐn)?shù)據(jù)庫(kù)級(jí)的加密(TDE)和列級(jí)的數(shù)據(jù)加密。數(shù)據(jù)庫(kù)級(jí)的加密是透明的,程序無需額外操作;而列級(jí)加密則需要程序進(jìn)行一些額外操作。SQL Server的加密層次結(jié)構(gòu)分為不同層級(jí),本文將介紹使用四個(gè)層次來加密/解密數(shù)據(jù)的過程。

測(cè)試環(huán)境準(zhǔn)備

在測(cè)試環(huán)境中,我們將使用SQL Server 2012 R2,并創(chuàng)建一個(gè)名為TBLUser的數(shù)據(jù)表,包含Name和Password兩個(gè)字段。下面是創(chuàng)建該表的T-SQL代碼:

```sql

CREATE TABLE TBLUser (

Name nvarchar(30),

Password varbinary(1000)

);

```

創(chuàng)建數(shù)據(jù)庫(kù)主密鑰

數(shù)據(jù)庫(kù)主密鑰(Database Master Key)位于服務(wù)主密鑰之下,用于為創(chuàng)建數(shù)據(jù)庫(kù)級(jí)證書或非對(duì)稱密鑰提供加密。每個(gè)數(shù)據(jù)庫(kù)只能有一個(gè)數(shù)據(jù)庫(kù)主密鑰,通過以下T-SQL語(yǔ)句創(chuàng)建:

```sql

CREATE MASTER KEY ENCRYPTION BY PASSWORD '';

```

創(chuàng)建證書

我們接著創(chuàng)建一個(gè)用于加密對(duì)稱密鑰的證書,具體代碼如下:

```sql

CREATE CERTIFICATE TestCert WITH SUBJECT 'Test Certificate';

```

創(chuàng)建對(duì)稱密鑰

根據(jù)SQL Server的加密層次結(jié)構(gòu),對(duì)稱密鑰可以通過密碼、其它對(duì)稱密鑰、非對(duì)稱密鑰或證書創(chuàng)建。這里我們以證書創(chuàng)建一個(gè)名為TestSymmetric的對(duì)稱密鑰,代碼如下:

```sql

CREATE SYMMETRIC KEY TestSymmetric WITH ALGORITHM AES_256 ENCRYPTION BY CERTIFICATE TestCert;

```

加密數(shù)據(jù)

首先打開對(duì)稱密鑰,然后使用ENCRYPTBYKEY函數(shù)加密數(shù)據(jù),并在完成后關(guān)閉對(duì)稱密鑰。具體代碼如下:

```sql

OPEN SYMMETRIC KEY TestSymmetric DECRYPTION BY CERTIFICATE TestCert;

INSERT INTO TBLUser VALUES ('張三', ENCRYPTBYKEY(Key_GUID(N'TestSymmetric'), '123456'));

CLOSE SYMMETRIC KEY TestSymmetric;

```

查看加密后數(shù)據(jù)

通過執(zhí)行以下SQL查詢,我們可以看到密碼字段內(nèi)容已被加密成16進(jìn)制字符,無法直接閱讀:

```sql

SELECT * FROM TBLUser;

```

解密數(shù)據(jù)

要解密數(shù)據(jù),同樣需要先打開對(duì)稱密鑰,然后使用DecryptByKey函數(shù)解密數(shù)據(jù),并最后關(guān)閉對(duì)稱密鑰。具體代碼如下:

```sql

OPEN SYMMETRIC KEY TestSymmetric DECRYPTION BY CERTIFICATE TestCert;

SELECT Name, CAST(DecryptByKey(password) as varchar(100)) Password FROM TBLUser;

CLOSE SYMMETRIC KEY TestSymmetric;

```

以上是使用SQL Server的加密層次結(jié)構(gòu)對(duì)數(shù)據(jù)進(jìn)行加密和解密的過程。通過合理管理密鑰和證書,可以有效保護(hù)敏感數(shù)據(jù)的安全性。

標(biāo)簽: