–SQL Server 2008中的代码安全(六):对称密钥加密
–证书和非对称密钥使用数据库级的内部公钥加密数据,并且使用数据库级内部私钥解密数据。
–而对称密钥相对简单,它们包含一个同时用来加密和解密的密钥。
–困此,使用对称密钥加密数据更快,并且用在大数据时更加合适。
–尽管复杂度是考虑使用它的因素,但它仍然是一个很好的加密数据的选择。
–示例一、创建对称密钥
—
–对称密钥的特性是:在数据库会话中使用它对数据进行加密和解密前必须首先打开。
—
–创建对称密钥使用如下命令:CREATE SYMMETRIC KEY 创建对称密钥。
–(http://msdn.microsoft.com/en-us/library/ms188357.aspx)
USE [pratice]
go
— 创建一个用于加密对称密钥的非对称密钥
CREATE ASYMMETRIC KEY symDemoKey –名称
WITH ALGORITHM = RSA_512 –加密算法
ENCRYPTION BY PASSWORD =’TestSYM456!’
–密码
— 创建一个对称密钥
CREATE SYMMETRIC KEY sym_Demo
WITH ALGORITHM = TRIPLE_DES
ENCRYPTION BY ASYMMETRIC KEY symDemoKey
–示例二、查看当前数据库中的对称密钥
—
–使用目录视图sys.symmetric_keys(http://msdn.microsoft.com/en-us/library/ms189446.aspx)来查看。
–查看当前数据库中的非对称密钥
USE [pratice]
go
SELECT name, algorithm_desc
FROM sys.symmetric_keys
–示例三、修改非对称密钥的加密方式
—
–你可以使用ALTER SYMMETRIC KEY(http://technet.microsoft.com/en-us/library/ms189440.aspx)命令修改
–对称密钥的加密方式。
–但执行前必须使用OPEN SYMMETRIC KEY(http://msdn.microsoft.com/en-us/library/ms190499.aspx)命令打开它。
USE [pratice]
go
–先用私钥密码打开对称密钥
OPEN SYMMETRIC KEY sym_Demo
DECRYPTION BY ASYMMETRIC KEY symDemoKey
WITH PASSWORD =’TestSYM456!’
–打开之后,先增加密码加密,取代原密钥
ALTER SYMMETRIC KEY sym_Demo
ADD ENCRYPTION BY PASSWORD =’newnew!456′
–再删除非对称密钥加密
ALTER SYMMETRIC KEY sym_Demo
DROP ENCRYPTION BY ASYMMETRIC KEY symDemoKey
–完成操作后,关闭对称密钥
CLOSE SYMMETRIC KEY sym_Demo
–示例四、使用对称密钥对数据进行加密和解密。
—
–1、为了使用对称密钥对数据进行加密,必须首先打开它,
–然后使用函数EncryptByKey 加密数据。(http://msdn.microsoft.com/zh-cn/library/ms174361.aspx)
–2、使用DecryptByKey来解密使用对称密钥加密的数据。注意DecryptByKey不像EncryptByKey,
–无须使用对称密钥GUID。因此,为了解密,必须打开正确的对称密钥会话,否则会显示null。










