首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > IBM DB2 >

db2字段加密有关问题

2013-06-26 
db2字段加密问题对字段进行加密时,如果字段存储不为二进制,则加密可以成功,但是解密是报错。如果字段类型为

db2字段加密问题
对字段进行加密时,如果字段存储不为二进制,则加密可以成功,但是解密是报错。
如果字段类型为二进制则可以解密成功,请问这是什么原因!

例:
create table test(test_Id intefer,test_value varchar(50));
DB20000I  SQL 命令成功完成。
insert into test values(1,encrypt('a',111222));
DB20000I  SQL 命令成功完成。
select test_id,decrypt_char(test_value,111222) from test;
SQL0171N  例程 "SYSIBM.DECRYPT" 的位置 "1"
中参数的自变量数据类型、长度或值不正确。参数名:""。  SQLSTATE=42815

将字段存储改为二进制:
delete from test;
alter table test alter column test_value set data type varchar(50) for bit data;
reorg table test;
insert into test values(1,encrypt('a',111222));
结果:
1 a DB2 解密
[解决办法]
因为ENCRYPT函数返回的数据类型是 VARCHAR FOR BIT DATA,所以你不应该在表中将数据类型定义为VARCHAR. DECRYPT函数接受的参数也是 BIT DATA 的,所以你表定义中是VARCHAR时,说参数类型不匹配。


--因此
--加密字段必须用二进制存储

热点排行