–本文及后面几篇文章将会举例说明。
–在SQL Server 2008中,还引入了对可扩展密钥管理(EKM)的支持,
–也就意味着SQL Server可以使用硬件安全模块(HSM)来存储和和管理加密密钥。
–HSM可以减少数据和实际的加密密钥耦合。
–此部分内容共分六篇文章:
–1、通过PassPhrase加密
–2、主密钥
–3、非对称密钥加密
–4、对称密钥加密
–5、证书加密
–6、透明数据加密
–一、通过通行短语(PassPhrase)加密
—
–对于不涉及证书及密钥的应急的数据加密,可以直接基于用户提供的密码来加密和解密数据。
–通行短语(PassPhrase)是允许存在空格的密码。
–这个PassPhrase不会存储在数据库中,因而也就意味着不会被使用存储的系统数据“破解”。
–同时,可以使用空格创建一个长的、易于记忆的句子来加密和解密敏感数据。
–我们需要了解的一对函数是ENCRYPTBYPASSPHRASE(http://technet.microsoft.com/zh-cn/library/ms190357.aspx)和DECRYPTBYPASSPHRASE(http://technet.microsoft.com/zh-cn/library/ms188910.aspx)
—
–这一对函数必须使用相同的参数。
—
–我们看一个示例:
USE [pratice]
go
— Table used to store the encrypted data
— for the purposes of this recipe
–DROP TABLE SecretInfo
–GO
CREATE TABLE SecretInfo
(
MySecret varbinary(max) NOT NULL –一定要二进制数据格式
)
GO
INSERT SecretInfo ( MySecret ) SELECT ENCRYPTBYPASSPHRASE(‘123456′,’你好啊’)
SELECT MySecret FROM SecretInfo
–想知道原文本的内容,使用以下语句:
SELECT CAST(DECRYPTBYPASSPHRASE(‘123456’, MySecret) AS VARCHAR(MAX))
FROM SecretInfo
–注意:
—
–1、使用通行短语进行加密数据,不用担心sysadmin服务器角色成员读取数据
–(在后面文章会看到,服务器角色成员sysadmin拥有读取其他形式的加密数据的内在权限。)
—
—
–2、假定没有将密码存储在表中或在任何模块(存储过程、触发器等)中使用密码,
–加密的数据将防止从数据库备份被偷窃或在SQL Server实例中的数据库中渗透。
–如果通行短语短语密码泄漏,数据就可以被解密。
您可能感兴趣的文章:SQL Server 2008中的代码安全(三) 通过PassPhrase加密SQLServer 2008中的代码安全(五) 非对称密钥加密SQL Server 2008中的代码安全(六) 对称密钥加密SQL Server储过程加密和解密原理深入分析实例讲解SQL Server加密功能










