温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么加密sql中的表

发布时间:2020-07-13 11:13:29 来源:亿速云 阅读:118 作者:Leah 栏目:MySQL数据库

这篇文章运用简单易懂的例子给大家介绍怎么加密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中的表

关于怎么加密sql中的表就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI