我酷下载
您的位置:首页-> 技术文章-> -> 数据库类-> SQL Server 2005数据加密技术应用研究(2)

阅读排行




SQL Server 2005数据加密技术应用研究(2)

作者未知 来源未知 加入时间:2006-8-30 人气:92

数据加密技术应用解析

下面通过实例来探讨SQL Server 2005数据加密与解密技术的实现。

假设有一张Customer 表,表中有字段 customer ID、 name、 city 和各种信用卡细节。其中信用卡细节需要加密而其他数据不需要。假设User1有对称式密钥,并用该密钥登录,运行相应的代码加密数据。

⑴ 数据加密

① 产生密钥:在含有Customers 表的数据库中使用Triple DES作为加密算法,生成对称式密钥。本例中,密钥本身由已经存在在数据库中的证书保护,如图一所示,对称密码受非对称密码和存在的其他对称式密钥保护。

CREATE SYMMETRIC KEY User1SymmetricKeyCert

AUTHORIZATION User1

WITH ALGORITHM = TRIPLE_DES

ENCRYPTION BY CERTIFICATE User1Certificate

② 打开密钥:对称式密钥使用前必须显式打开,所以接下来打开它,重新找回密码,解密它,并放它在受保护的服务器内存中,准备使用。

OPEN SYMMETRIC KEY User1SymmetricKeyCert

DECRYPTION BY CERTIFICATE User1Certificate

③ 加密数据:在下面的代码中,使用正常的T-SQL INSERT语句将一行数据插入表中,id、name和city 用明文保存,信用卡类型、号码以及有潜在机密的客户注释用加密方式储存,用Triple DES加密算法加密数据。

INSERT INTO Customer

VALUES (4, 'John Doe', 'Fairbanks',

EncryptByKey(Key_GUID(

'User1SymmetricKeyCert'), 'Amex'),

EncryptByKey(Key_GUID(

'User1SymmetricKeyCert'),

'1234-5678-9009-8765'),

EncryptByKey(Key_GUID(

'User1SymmetricKeyCert'),

'Window shopper. Spends $5 at most.'))

加密完成后,关闭它,释放内存,以防它被误用。

CLOSE SYMMETRIC KEY User1SymmetricKeyCert

以上是整个的数据加密的操作过程。它没有混乱的密码管理,也不用调用特别的算法。储存加密数据的字段是varbinary类型数据,其长度足以储存扩展的数据(加密数据比明文需要更多的空间,有时候多很多)。

下图为对Customer 表运行正常的SELECT * 语句显示的带有加密数据的结果:

图2 加密后的数据的查询结果

⑵ 数据解密

要解密已加密的数据,你需要重新打开对称式加密。使用DecryptByKey函数读数据,然后关闭对称式加密。结果及相应的代码如下。

OPEN SYMMETRIC KEY User1SymmetricKeyCert

DECRYPTION BY CERTIFICATE User1Certificate

SELECT CustID, Name, City,

CONVERT(VARCHAR, DecryptByKey(CreditCardType))

AS CardType,

CONVERT(VARCHAR, DecryptByKey(CreditCardNumber))

AS CardNumber,

CONVERT(VARCHAR, DecryptByKey(Notes))

AS Notes

FROM Customer WHERE CustID = 4

CLOSE SYMMETRICKEYUser1SymmetricKeyCert

图3 对加密数据进行解密后的结果

这个例子显示了让SQL Server 2005为你管理密钥的一种方法。但实际上,用户总是选择自己提供一个口令的方式,用RC4算法产生对称密码。代码如下:

CREATE SYMMETRIC KEY User2SymmetricKeyPwd

AUTHORIZATION User2

WITH ALGORITHM = RC4

ENCRYPTION BY PASSWORD = 'sdylvxF&imeG3FP'

SQL Server 2005产生一个基于用户提供的口令的密钥来加密数据。除非明确指定,否则口令不保存在SQL Server 2005中,用户必须保护好自己的口令,否则任何一个知道口令的人都可以解密数据。

如果认为对存储在数据库中的数据加密完全是浪费处理器时间和存储空间那就错了。SQL Server 2005中的数据加密是一个非凡的特性,它为客户的数据提供了一个重要的保护层。但应用时要注意,只对那些敏感机密的数据进行保护,因为加密消耗服务器处理器大量的资源,如果对一个有一千万条记录的表的每个字段都加密的话,运行一条没有Where 子句的SELECT 就可能导致服务器性能的崩溃。


相关文章
  • SQL Server 2005数据加密技术应用研究(1)
  • 相关软件

    联系我们 广告服务 友情链接 版权说明 软件发布 下载帮助

    CopyRight
    2005-2016 www.5qcn.net All Rights Reserved 版权所有 【我酷】下载