WEB开发网
开发学院数据库DB2 DB2中的数据值加密 阅读

DB2中的数据值加密

 2007-05-20 16:16:41 来源:WEB开发网   
核心提示: -- Define Tables and Indexes for encrypted data create table emp (ssn varchar(48) for bit data, name varchar(48) ); create unique index idxEmp on

-- Define Tables and Indexes for encrypted data

create table emp (ssn varchar(48) for bit data,

name varchar(48) );

create unique index idxEmp on emp ( ssn ) includes (name) ;

create table empProject( ssn varchar(48) for bit data,

projectName varchar(48) );

create index idxEmpPrj on empProject ( ssn );

-- Add some data

set encryption password = 'ssnPassWord';

insert into emp values (encrypt('480-93-7558'),'Super Programmer');

insert into emp values (encrypt('567-23-2678'),'Novice Programmer');

insert into empProject values (encrypt('480-93-7558'),'UDDI Project');

insert into empProject values (encrypt('567-23-2678'),'UDDI Project');

insert into empProject values (encrypt('480-93-7558'),'DB2 UDB Version 10');

-- Find the programmers working on UDDI select a.name, decrypt_char(a.ssn)

from emp a, empProject b

where

a.ssn = b.ssn

and b.project ='UDDI Project';

-- Build a list of the projects that the programmer with ssn

-- '480-93-7558' is working on

select projectName

from empProject

where ssn = encrypt('480-93-7558');

相对于上面的例子,下面的两个例子是 不应该采用的反面典型。虽然这些查询同样能够返回正确的答案,但是它们会需要为所有行解密 ssn。当表很大的时候,这个问题就会变得突出起来。

select a.name, decrypt_char(a.ssn)

from emp a, empProject b

where

decrypt_char(a.ssn) = decrypt_char(b.ssn)

and b.project ='UDDI Project';

该查询会要求解密 emp 表的每一行以及 empProject 表的每个 'UDDI Project' 行,以执行连接。

select projectName

from empProject

where decrypt_char(ssn)= '480-93-7558';

该查询会要求解密 empProject 表中的每一行。

结束语

在本文中,我们演示了 IBM DB2 Universal Database 中的加密函数如何提供简单方式来加密敏感数据。这些函数可用来实现列级和行-列级的加密。在设计和实现期间,开发人员应该审视一些重要的性能相关事项。数据加密为隐藏私有数据增添了一种新的可用工具,即使对于管理人员,也能起到保密的作用。

上一页  1 2 3 4 5 

Tags:DB 数据 加密

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接