sql server 怎么设置表中加密

2025-10-31 18:33:27

1、测试环境说明

测试使用SQL Servre 2012 R2,创建如下的数据表:

--创建测试用的用户表

CREATE TABLE TBLUser 

(    

    Name             nvarchar(30),     

    Password         varbinary(1000),    

)

GO

sql server 怎么设置表中加密

2、创建数据库主密钥

数据库主密钥(Database Master Key)在服务主密钥之下,由服务主密钥进行加密。这是一个数据库级别的密钥,可以用于为创建数据库级别的证书或非对称密钥提供加密。每一个数据库只能有一个数据库主密钥,通过T-SQL语句创建。具体代码如下:

--创建数据库主密钥

CREATE MASTER KEY ENCRYPTION BY PASSWORD ='passW@ord'

GO

sql server 怎么设置表中加密

3、创建证书

创建一个用来加密对称秘钥证书,具体代码如下:

--创建证书

CREATE CERTIFICATE TestCert with SUBJECT = 'Test Certificate'

GO

sql server 怎么设置表中加密

4、创建一个对称秘钥

由SQL Server加密层次结构可以看出,对称密钥可以通过密码创建,也可以通过其它对称密钥、非对称密钥和证书创建。本文以证书创建一个测试用的对称秘钥,具体代码如下:

--创建对称密钥

CREATE SYMMETRIC KEY TestSymmetric WITH ALGORITHM = AES_256

    ENCRYPTION BY CERTIFICATE TestCert 

GO

sql server 怎么设置表中加密

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 server 怎么设置表中加密

6、查看加密后的数据

直接下SQL查询加密后的数据,可以看到password的内容是一串不可以阅读的16进制的字符。

--查看加密后的数据

SELECT * FROM TBLUser

GO

sql server 怎么设置表中加密

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 server 怎么设置表中加密

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢