Label
SQL Server 2005 用分层加密和密钥管理基础结构来加密数据。每一层都使用证书、非对称密钥和对称密钥的组合对它下面的一层进行加密。
1.创建数据库主密钥、证书及对称密钥。在SQL Server management studio中,新建查询,输入如下代码创建数据库主密钥:
CREATE DATABASE DEMO;
GO
USE DEMO;
GO
--建Employee表,其中encryptsalary是薪水salary加密列
CREATE TABLE EMPLOYEE (
EmployeeID INT PRIMARY KEY , FULLNAME VARCHAR(100),
SALARY INT, ENCRYPTSALARY VARBINARY(4000) )
go
--如果不存在数据库主密钥就创建一个
IF NOT EXISTS
(SELECT * FROM sys.symmetric_keys WHERE symmetric_key_id = 101)
CREATE MASTER KEY ENCRYPTION BY
PASSWORD = ?hxJKL95QYV4369#ghf0%94467GRdkjuw54ie5y01478dDkjdahflkujaslekjg5k3fd117r$$#1946kcj$n44ncjhdlj'
go
2. 创建登录和用户slh
USE MASTER
CREATE LOGIN slh WITH PASSWORD=abcd'
go
USE DEMO;
go
--在数据库DEMO级别为slh创建用户并授予权限
CREATE USER slh FOR LOGIN slh
GRANT SELECT,INSERT, UPDATE ON EMPLOYEE TO slh
3.创建一个证书,指定证书的所有者
CREATE CERTIFICATE CER_SK_slh
AUTHORIZATION slh
WITH SUBJECT ='CERTIFICATE FOR ACCESS SYMMETRIC KEYS -FOR USE BY slh',
start_date = ༽/01/2006',
EXPIRY_DATE = ཆ/31/2099'
Go
4.并用所创建的证书,加密创建对称密钥,对称密钥的算法使用AES类算法
CREATE SYMMETRIC KEY SK_EMPLOYEES_slh
AUTHORIZATION slh
WITH ALGORITHM=AES_192
ENCRYPTION BY CERTIFICATE CER_SK_slh
go
5. 指定下面的语句在slh的上下文下运行,打开对称密钥,加密数据
exec as login='slh'
OPEN SYMMETRIC KEY SK_EMPLOYEES_slh DECRYPTION BY CERTIFICATE CER_SK_slh
go
INSERT INTO EMPLOYEE
valueS(1,'zhangsan',',ENCRYPTBYKEY(KEY_GUID('SK_EMPLOYEES_slh'),'))
go
INSERT INTO EMPLOYEE
valueS(2,'lishi',',ENCRYPTBYKEY(KEY_GUID('SK_EMPLOYEES_slh'),'))
go
6. 关闭对称密钥
CLOSE ALL SYMMETRIC KEYS
7. 验证数据是否被加密
SELECT * FROM EMPLOYEE
8.将加密的数据解密
OPEN SYMMETRIC KEY SK_EMPLOYEES_slh DECRYPTION BY CERTIFICATE CER_SK_slh
go
SELECT EMPLOYEEID,SALARY,CONVERT(VARCHAR(1000),DECRYPTBYKEY(ENCRYPTSALARY)) AS SALARY1 FROM EMPLOYEE 本文作者:宋立桓 来源:http://www.winmag.com.cn/forum/
CIO之家 www.ciozj.com 微信公众号:imciow
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读