【问题标题】:Having trouble with FIELDPROC on a database (Column Encryption on Iseries)在数据库上使用 FIELDPROC 时遇到问题(Iseries 上的列加密)
【发布时间】:2015-06-08 21:49:06
【问题描述】:

我使用以下链接中的清单 3 创建了一个 FIELDPROC 程序 QGPL/MOBHOMEPAS,它应该加密一个变量 char 列 Field Encryption in DB2 for i

我编译了 RPGLE 程序并创建了一个单独的数据库 DBMLIB/UMAAAP00,如下所示

A          R UMAAAF00                  TEXT('-          
A                                      TEST ENCRYPTION')
A*                                                      
A            IPIAAA        20A         VARLEN(20)       
A            KYGAAA        11S 2       COLHDG('SALARY') 

然后我使用 strsql 更改表并保护 IPIAAA

ALTER TABLE DBMLIB/UMAAAP00 alter column IPIAAA set FIELDPROC
QGPL.MOBHOMEPAS  

ALTER COMPLETED FOR TABLE UMAAAP00 IN DBMLIB.          

由于某种原因,当我通过 upddta 直接将条目添加到文件本身,然后执行 wrkqry 来查询和归档并查看它们时,我没有看到它们是加密的。

这不是它应该如何工作的吗?有没有人可以帮助我的逻辑?最终,我想从头开始创建一个简单的表,其中包含一个 20 个字符左右的加密密码列。

【问题讨论】:

  • 您是否完全按照提供的方式使用示例代码?或者您是否添加了任何代码来限制某些用户的解码? QGPL.MOBHOMEPAS 是否可用于运行 RUNQRY 的作业?

标签: encryption passwords ibm-midrange password-encryption db2-400


【解决方案1】:

如果用于命名 FieldProc 程序 QGPL.MOBHOMEPAS 的代码是在从 OP 的 URL 中找到的源代码的 [有效副本] 之后建模的 [顺便说一句,其中包括对 cme​​ts 的位置请求部分...为什么?],那么该代码是使用 DB2 for IBM i 7.1 SQL FieldProc 支持的基本级别实现的,而不是 next [增强] 级别的支持,其中 遮蔽功能。也就是说,除了 function-code=8 之外的每个调用都必须始终是 Encode 或 Decode 操作,不支持任何 屏蔽 数据,因为更改数据 [使用该级别的支持] 会损坏 TABLE 中的数据。

注意 [来自http://www.mcpressonline.com/rpg/db2-field-procedures-finally-support-conditional-masking.html] pre-masking-support [八个参数] 和 since-masking-support [九个参数] 作为运行查询 (RUNQRY) 的先决条件描述的编码要求的差异) 和更新数据 (UPDDTA) 功能屏蔽呈现给用户的数据

新的 FieldProc Masking 支持围绕两个主要组件展开。 第一个组件是添加到参数中的新参数 列出 DB2 引擎传递给 FieldProc 程序的每个 解码调用。这个新参数控制 FieldProc 是否 程序可以返回一个掩码值。有一些 DB2 操作——比如 作为 RGZPFM(重组物理文件成员)命令和触发器 处理——总是需要数据的明文版本 被退回。第二个组件是一个新的特殊 SQLState 值 ('09501') 将由 FieldProc 程序在任何时候返回 在编码调用中传递一个掩码值。这可以防止蒙面 被编码的值,这将导致原始数据 价值正在丧失。当返回这个特殊的 SQLState 值时,DB2 将忽略 FieldProc 传回的编码值 程序,而是使用当前存储在 记录该列的图像。

【讨论】:

    【解决方案2】:

    由于某种原因,当我通过 upddta 直接添加条目时 文件本身,然后执行 wrkqry 来查询和归档并查看它们我 不要将它们视为加密的。这不是它应该如何工作的吗?

    不,这不是它应该的工作方式。数据将仅在磁盘上编码。 当您查看数据时,FIELDPROC 程序将自动对其进行解码,无论您使用什么来查看它(WRKQRY [yuck]、DFU、STRSQL 等等)。无论字段屏蔽(这是不同/附加功能),它都是这样工作的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-17
      • 2016-12-22
      • 2020-04-03
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多