内容简介:朋友们,我们在使用SQLServer数据库的时候,数据库表的字段值都是公开的。如果您是项目负责人,知道所有实际数据无可厚非,但如果这些数据比较敏感,您并不希望开发团队的其他人员知道该怎么办呢?在上一篇《SQL Server如何进行元数据底层加密》中,我详细说明了SQL Server数据加密用到的各种SQL语法,这一讲我们结合实例实战一下对数据库字段进行加密的方法和过程。
朋友们,我们在使用SQLServer数据库的时候,数据库表的字段值都是公开的。如果您是项目负责人,知道所有实际数据无可厚非,但如果这些数据比较敏感,您并不希望开发团队的其他人员知道该怎么办呢?
在上一篇《SQL Server如何进行元数据底层加密》中,我详细说明了SQL Server数据加密用到的各种 SQL 语法,这一讲我们结合实例实战一下对数据库字段进行加密的方法和过程。
比如您是项目负责人,要给客户开发一个工资系统。一般企业的工资都是保密的,如果您直接把工资信息都明文放在数据库中,您的开发团队的每个人都很容易知道客户员工的工资。如果客户是个大企业,这其中的风险我不说您应该也很清楚。
我们就以最简化的工资表为例,说明如何对敏感信息进行加密。如果您对加密用到的SQL语法不是很了解,建议您可以先回头看看我上一篇的相关描述。
第一步,创建数据库主密钥
CREATE MASTER KEY ENCRYPTION BY PASSWORD ='SysKey' GO
这里创建了数据库主密钥,比如密码是'SysKey'。主密钥只需要创建一次。
第二步,创建证书
CREATE CERTIFICATE MYCERT with SUBJECT = 'My Cert' GO
这里创建了证书MYCERT,证书的元数据中的字段为'My Cert'。证书创建一次,以后解密时需要先Open。
第三步,创建对称密钥
CREATE SYMMETRIC KEY MYKEY WITH ALGORITHM = AES_256 ENCRYPTION BY CERTIFICATE MYCERT; GO
这里基于证书MYCERT创建了密钥MYKEY,加密算法为AES_256。加密算法有好几种。
前三步做完之后,我们可以在资源管理器中看到我们的证书和密钥信息,如下图所示:
第四步:加密解密有效性测试
我们先通过变量测试加密解密的有效性:
OPEN SYMMETRIC KEY MYKEY DECRYPTION BY CERTIFICATE MYCERT;
declare @key varbinary(MAX);
set @key=EncryptByKey(key_guid('MYKEY'),'20000.00');
select @key;
select convert(varchar(100), DecryptByKey(@key));
在解密之前,要先打开我们定义的密钥,通过:
OPEN SYMMETRIC KEY NCSK DECRYPTION BY CERTIFICATE NCSC;
这句打开密钥,如果不先打开密钥,返回的将会是NULL。
运行参考结果参考下图:
第五步,准备使用的数据
为了描述方便,我们创建一个工资表变量:
declare @Salary table( FName nvarchar(50), FSalary varbinary(MAX));
这里要注意,存放加密数据的字段要设置成varbinary类型。
第六步,插入加密数据
插入时,要使用函数EncryptByKey对文本进行加密,通过函数key_guid获取密钥,加密后的数据类型为varbinary。
insert into @Salary(FName,FSalary)
values
('张三',EncryptByKey(key_guid('MYKEY'),'20000.00')),
('李四',EncryptByKey(key_guid('MYKEY'),'25000.00')),
('王二',EncryptByKey(key_guid('MYKEY'),'30000.00'));
第七步:数据读取
读取数据时需要调用函数DecryptByKey解密,通过Convert将解密后的Varbinary转换成varchar类型。
select *,convert(varchar, DecryptByKey(FSalary)) from @Salary;
完整的处理请参考下图:
怎么样,整个过程不复杂吧。希望对您有所帮助!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- ADO.NET获取数据(DataSet)同时获取表的架构实例
- Oracle获取列数据大小
- Mysql批量大数据获取
- sqlserver数据库获取数据库信息
- dva 如何异步获取接口数据
- beego获取ajax数据的实例
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Learn Python the Hard Way
Zed A. Shaw / Addison-Wesley Professional / 2013-10-11 / USD 39.99
Master Python and become a programmer-even if you never thought you could! This breakthrough book and CD can help practically anyone get started in programming. It's called "The Hard Way," but it's re......一起来看看 《Learn Python the Hard Way》 这本书的介绍吧!