首页  ·  知识 ·  数据库
学习SQLServer2005新特性第五讲:加密解密功能
宋立桓  http://www.winmag.com.cn/forum/  MS-SQL  编辑:dezai  图片来源:网络
SQLServer2005用分层加密和密钥管理基础结构来加密数据。每一层都使用证书、非对称密钥和对称密钥的组合对它下面的一层进行加密。1
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
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读
也许感兴趣的
我们推荐的
主题最新
看看其它的