这一对函数必须使用相同的参数。
我们看一个示例:
use DemoDB2008r2
go
— Table used to store the encrypted data
— for the purposes of this recipe
CREATE TABLE #SecretInfo
(MySecret varbinary(max) NOT NULL)
GO
INSERT #SecretInfo (MySecret)
SELECT EncryptByPassPhrase(
‘My Password Used To Encrypt This String in 2008.’,
‘我把公司的服务器数据库密码记在那个绿色的小本子上了。’)
SELECT MySecret FROM #SecretInfo
/*
通常的查询结果:
0x01000000CCBC800C6B5CECE3F211FB975C2F8B681CC8301DDE74CF783C6A593
16C2BAC08D568151FD573E2FDE01C800805C8D1D5984727DEE95040C1FB604003
A3EFDD0444CE72D7E505D1A4
*/
/************
想知道原文本的内容,使用以下语句:
——–3w@live.cn
**********************/
SELECT CAST(DecryptByPassPhrase(
‘My Password Used To Encrypt This String in 2008.’,
MySecret) as varchar(max))
FROM #SecretInfo
注意:
1、使用通行短语进行加密数据,不用担心sysadmin服务器角色成员读取数据(在后面文章会看到,服务器角色成员sysadmin拥有读取其他形式的加密数据的内在权限。)
2、假定没有将密码存储在表中或在任何模块(存储过程、触发器等)中使用密码,加密的数据将防止从数据库备份被偷窃或在SQL Server实例中的数据库中渗透。如果通行短语没有正确共享,数据就可以被解密。
邀月
您可能感兴趣的文章:SQLServer 2008中的代码安全(五) 非对称密钥加密SQL Server 2008中的代码安全(六) 对称密钥加密SQL Server储过程加密和解密原理深入分析SQLSERVER加密解密函数(非对称密钥 证书加密 对称密钥)使用方法代码实例讲解SQL Server加密功能










