首页 > 学技术 > 技术网文 > IBM AS400应用论坛 > 正文

[精彩] 想不想学两招:第一招:如何在pf文件字段中保护应用数据?


来源 chinaunix.net 酷勤网整理

如何在pf文件字段中保护应用数据?即使是系统管理员也无法看到这个数据。如远程应用程序的用户密码等数据(以20人愿学者回应本贴,公布答案)。

同时欢迎以自我方式解答本题。



 ibmas400 回复于:2005-10-31 10:21:51

支持!!! ^-^

我从PF的OBJECT控制访问角度考虑,去掉*PUBLIC公共访问权限,赋予*EXECUTE权限;然后再单独对允许访问者授权(*READ、*ADD、*UPD、*DLT)。


 mario663 回复于:2005-10-31 10:46:20

顶一下,想了解!


 passthru 回复于:2005-10-31 11:08:22

引用:原帖由 ibmas400 于 2005-10-31 10:21 发表
支持!!! ^-^

我从PF的OBJECT控制访问角度考虑,去掉*PUBLIC公共访问权限,赋予*EXECUTE权限;然后再单独对允许访问者授权(*READ、*ADD、*UPD、*DLT)。 



是一种暂时方法,但不是根本方法。我的意思是任何操作员通过控制台进入都无法看到被保护pf字段的内容。


 nhxingliang 回复于:2005-10-31 11:17:02

想学呀。。。。。。。。。。。。。。。。。。。


 qingzhou 回复于:2005-10-31 11:30:05

考虑zyzng以前发表的《如何在iSeries(AS/400)將资料加密》?
http://bbs.chinaunix.net/viewthread.php?tid=365301&extra=page%3D6%26filter%3Ddigest


 passthru 回复于:2005-10-31 12:16:12

引用:原帖由 qingzhou 于 2005-10-31 11:30 发表
考虑zyzng以前发表的《如何在iSeries(AS/400)將资料加密》?
http://bbs.chinaunix.net/viewthread.php?tid=365301&extra=page%3D6%26filter%3Ddigest 



看了内容,只是种算法。

我要说的东东,比较简单,容易操作使用,即在知道和不知道之间只隔层纸;同时也可以学到RPG另外一种编程方式。


 kingkch1981 回复于:2005-10-31 12:36:12

请教


 I-love-as400 回复于:2005-10-31 12:40:46

说来听听。

另外想了解一下你们公司刚刚成立,有何背景?项目多吗?招人吗?


 passthru 回复于:2005-10-31 12:55:29

引用:原帖由 I-love-as400 于 2005-10-31 12:40 发表
说来听听。

另外想了解一下你们公司刚刚成立,有何背景?项目多吗?招人吗? 



没有背景,只有技术和项目。项目较多,很快就会大量招AS400、Java、C++人员。目前有编程人员约30人。


 zyzng 回复于:2005-10-31 13:06:09

好像是在SQL实现的field-level security,用GRANT,REVOKE


 passthru 回复于:2005-10-31 13:11:28

引用:原帖由 zyzng 于 2005-10-31 13:06 发表
好像是在SQL实现的field-level security,用GRANT,REVOKE 



我要讲的方法,如用SQL打开,肯定系统报错。


 sz_lixlx 回复于:2005-10-31 13:44:42

期待中啊 .......


 zzw3206 回复于:2005-10-31 14:02:04

引用:原帖由 passthru 于 2005-10-31 12:55 发表


没有背景,只有技术和项目。项目较多,很快就会大量招AS400、Java、C++人员。目前有编程人员约30人。 



作什么类型的项目啊,,是银行系统吗???????????


 ibmas400 回复于:2005-10-31 14:04:52

果然很玄。。。:em51::em51::em51:

一般控制对敏感数据的访问都是采用:Journal Receiver+Journal 来进行控制。


 passthru 回复于:2005-10-31 14:07:02

引用:原帖由 zzw3206 于 2005-10-31 14:02 发表


作什么类型的项目啊,,是银行系统吗??????????? 



有,


 hhmyz 回复于:2005-10-31 14:21:29

頂到20人為止


 aps01 回复于:2005-10-31 14:29:01

passthru是有實力的,你們公司也一定有實力,頂一個。


 excuse 回复于:2005-10-31 14:45:33

引用:原帖由 passthru 于 2005-10-31 12:16 发表

我要说的东东,比较简单,容易操作使用,...... 


简单吗?那我可要学拉,就喜欢学简单易操作又能解决问题的~:wink:

[ 本帖最后由 excuse 于 2005-10-31 14:52 编辑 ]


 mamei 回复于:2005-10-31 15:33:44

算我一个


 span1024 回复于:2005-10-31 15:40:26

要SQL不能取PF的数据,又不通过权限来控制的话,还真没有见过的,好象SQL不能取多记录格式的LF里的数据.

[ 本帖最后由 span1024 于 2005-10-31 15:43 编辑 ]


 just a kid 回复于:2005-10-31 21:04:36

汗,22楼了,LZ的解答在哪里


 tom9030 回复于:2005-10-31 21:17:19

顶一下!!


 fairyboy 回复于:2005-10-31 21:42:21

晕,翻到第3页,还没看到答案,顶一下


 hhmyz 回复于:2005-11-01 08:56:55

今天又來看﹐沒有﹐繼續等


 tianyi 回复于:2005-11-01 09:03:11

顶一下!怎么还没有答案呢?


 mamei 回复于:2005-11-01 09:11:47

期待着,期待着!


 passthru 回复于:2005-11-01 11:21:31

这两天特别忙,我会很快公布答案。

先提示一下:用不同属性字段填放内容,如数字型字段放字符型的东东。只有用RPG程序才能做到。


 coolk 回复于:2005-11-01 12:44:12

还不公布答案?算我一个,^_^


 qingzhou 回复于:2005-11-01 12:46:37

引用:原帖由 passthru 于 2005-11-1 11:21 发表
这两天特别忙,我会很快公布答案。

先提示一下:用不同属性字段填放内容,如数字型字段放字符型的东东。只有用RPG程序才能做到。 


张冠李戴?:D:D:D


 passthru 回复于:2005-11-01 13:15:05

引用:原帖由 qingzhou 于 2005-11-1 12:46 发表

张冠李戴?:D:D:D 



对!在RPG程序中定义文件记录为程序描述型,不用外部描述型。在文件描述记录中,定义要保护的字段为字符型,而在实际的PF文件中该字段属性为数字型。

试试看。


 zyzng 回复于:2005-11-01 15:53:52

有个问题,如果看这个field的16进制(HEX)的格式呢?不是可以看得出来?


 qingzhou 回复于:2005-11-01 15:57:29

引用:原帖由 passthru 于 2005-11-1 13:15 发表


对!在RPG程序中定义文件记录为程序描述型,不用外部描述型。在文件描述记录中,定义要保护的字段为字符型,而在实际的PF文件中该字段属性为数字型。

试试看。 


这个思路有些反常、不知道RPG/RPGLE是否能够允许这样做?没试过。。。:roll:


 passthru 回复于:2005-11-01 16:17:02

引用:原帖由 zyzng 于 2005-11-1 15:53 发表
有个问题,如果看这个field的16进制(HEX)的格式呢?不是可以看得出来? 



就算是看得出来,谁有会花这个精力去看?何况DUMP文件那么巨大。


 passthru 回复于:2005-11-01 16:20:07

引用:原帖由 qingzhou 于 2005-11-1 15:57 发表

这个思路有些反常、不知道RPG/RPGLE是否能够允许这样做?没试过。。。:roll: 



刚刚做过项目,就用过这类方法。没有任何问题。这种方式,在北美非常流行。特别是早期的应用程序。


 zyzng 回复于:2005-11-01 16:21:15

因为这样是乱码,用DFU都会报错。再说不需要dump就可以看HEX格式的。如果银行卡密码这样处理,估计
一大堆人会去看:D


 passthru 回复于:2005-11-01 16:29:12

引用:原帖由 zyzng 于 2005-11-1 16:21 发表
因为这样是乱码,用DFU都会报错。再说不需要dump就可以看HEX格式的。如果银行卡密码这样处理,估计
一大堆人会去看:D 



从技术上讲,在此基础上还有许多招数,如数据进行压缩放在不同属性的字段内。那根本没有办法看!

从管理角度上讲,任何单位都不会让人在应用系统机上进行操作。数据备份人员和系统管理员根本没有权限打开pf文件。

这种办法介绍到此为止,不再深入。

[ 本帖最后由 passthru 于 2005-11-1 17:04 编辑 ]


 michael9406 回复于:2005-11-01 23:47:50

晕了。。。。 看了这么长。

个人认为如果是要共享的,那么还是直接介绍好,这样节约大家的时间。


 jj8610 回复于:2005-11-02 10:05:10

请PASSTHRU兄留个联系电话好吗!?


 just a kid 回复于:2005-11-02 10:08:22

引用:原帖由 michael9406 于 2005-11-1 23:47 发表
晕了。。。。 看了这么长。

个人认为如果是要共享的,那么还是直接介绍好,这样节约大家的时间。 


我赞成


 qingzhou 回复于:2005-11-02 11:55:55

引用:原帖由 michael9406 于 2005-11-1 23:47 发表
晕了。。。。 看了这么长。

个人认为如果是要共享的,那么还是直接介绍好,这样节约大家的时间。 


人家可是循循善诱引导你先动脑筋,自己先思考,然后再点到为止的。:mrgreen:


 passthru 回复于:2005-11-02 12:33:28

引用:原帖由 jj8610 于 2005-11-2 10:05 发表
请PASSTHRU兄留个联系电话好吗!? 



0411-39750568

看了你的其它贴子,我俩有许多共同之处。


 passthru 回复于:2005-11-02 12:39:32

引用:原帖由 michael9406 于 2005-11-1 23:47 发表
晕了。。。。 看了这么长。

个人认为如果是要共享的,那么还是直接介绍好,这样节约大家的时间。 



如果不这样做,我如何知道你们是否真的学到?我又如何了解你们的水平?

说实在的,如果我直接仍贴子,我自己都不会有干劲。


 smalltree 回复于:2005-11-02 14:24:40

多谢LZ的帖子,我也有点明白了,但可否能把具体的格式告之!!


 yoyoage 回复于:2005-11-02 21:22:14

引用:原帖由 passthru 于 2005-11-1 13:15 发表


对!在RPG程序中定义文件记录为程序描述型,不用外部描述型。在文件描述记录中,定义要保护的字段为字符型,而在实际的PF文件中该字段属性为数字型。

试试看。 



是不是类似于下面的方法:
D CVTDS           DS

D   asHEX                        2
D   asINT                        5U 0 OVERLAY(ASHEX)


PF中的数字字段原始值放在asINT中,通过overlay转换给字符型asHEX,就变成了系统内部的十六进制了,不可读的。 我用过C里面的cvthc函数,可以将asHEX转换成可读的字符表示的十六进制值。


 passthru 回复于:2005-11-02 23:02:50

引用:原帖由 yoyoage 于 2005-11-2 21:22 发表


是不是类似于下面的方法:
D CVTDS           DS

D   asHEX                        2
D   asINT                        5U 0 OVERLAY(ASHEX)


PF中的数字字段原始值放在asINT中,通过ove ... 



不是的。

有空我会写出代码。这几天没时间。今晚也是刚刚加班回住宿,23:00。明后天更忙。


 fairyboy 回复于:2005-11-03 09:25:37

顶一下,机会还是不错的


 fairyboy 回复于:2005-11-03 09:29:48

还没去试


 YZG 回复于:2005-11-03 09:52:10

这种做法可以用DS结构形式WRITE数据,当然也可以更新.  

在以前做一个工具的时候(WRKDBF),对于类型的转换碰到过.

你可以根据数据所处的位置任意设置值.当然也可以是不符合当前位置类型的数据.只有在用类似于DFU这种工具读取时会出错.  但用程序描述文件读取后进行转换是没问题的.  当时做上面这个工具时只是碰到过这层面的东西.没LZ研究的深.不过做法确实可行.

[ 本帖最后由 YZG 于 2005-11-3 09:56 编辑 ]


 beeryj 回复于:2005-12-07 17:43:19

FSRCF    UF  F      92            DISK
     E                    IN0       256  1
     E                    IN1       256  1
     E                    IN2       256  1
     E                    IN3       256  1
     E                    IN4       256  1
     E                    IN5       256  1
     E                    CODE1   1   1 80
     E                    CODE2   1   1 80
     E                    CODE3   1   1 80
     E                    CODE4   1   1 80
     E                    CODE5   1   1 80
     ISRCF    AA  01
     I                                        1   60SRCSEQ
     I                                        7  120CHGDAT
     I                                       13  92 SRCDTA
     C*          *LOVAL    SETLLSRCF
     C                     READ SRCF                     10
     C           *IN10     DOWEQ'0'
     C                     MOVEASRCDTA    IN0,1            1st array
     C                     MOVEACODE1,1   IN1,1            2nd array
     C                     MOVEACODE2,1   IN2,1
     C                     MOVEACODE3,1   IN3,1
     C                     MOVEACODE4,1   IN4,1
     C                     MOVEACODE5,1   IN5,1
     C                     Z-ADD0         X       30
     C                     Z-ADD80        LEN     30
     C           NXTBYT    TAG
     C                     ADD  1         X
     C                     MOVE IN0,X     F0      1
     C           F0        IFNE ' '
     C                     MOVE IN1,X     F1      1
     C                     EXSR OR
     C                     MOVE IN2,X     F1
     C                     EXSR OR
     C                     MOVE IN3,X     F1
     C                     EXSR OR
     C                     MOVE IN4,X     F1
     C                     EXSR OR
     C                     MOVE IN5,X     F1
     C                     EXSR OR
     C                     MOVE F0        IN0,X
     C                     ENDIF
     C           X         CABLTLEN       NXTBYT
     C                     MOVEAIN0,1     SRCDTA
     C                     EXCPTUPDATE
     C           END       TAG
     C                     READ SRCF                     10
     C                     ENDDO
     C                     SETON                     LR
     C                     RETRN
      *
     C           OR        BEGSR
     C                     TESTB'0'       F1         21    22 is off
     C                     TESTB'0'       F0         22    21 is off
     C  N21N22             BITOF'0'       F0               Both on
     C  N21 22             BITON'0'       F0               F0 on/F1 off
     C                     TESTB'1'       F1         21    22 is off
     C                     TESTB'1'       F0         22    21 is off
     C  N21N22             BITOF'1'       F0               Both on
     C  N21 22             BITON'1'       F0               F0 on/F1 off
     C                     TESTB'2'       F1         21    22 is off
     C                     TESTB'2'       F0         22    21 is off
     C  N21N22             BITOF'2'       F0               Both on
     C  N21 22             BITON'2'       F0               F0 on/F1 off
     C                     TESTB'3'       F1         21    22 is off
     C                     TESTB'3'       F0         22    21 is off
     C  N21N22             BITOF'3'       F0               Both on
     C  N21 22             BITON'3'       F0               F0 on/F1 off
     C                     TESTB'4'       F1         21    22 is off
     C                     TESTB'4'       F0         22    21 is off
     C  N21N22             BITOF'4'       F0               Both on
     C  N21 22             BITON'4'       F0               F0 on/F1 off
     C                     TESTB'5'       F1         21    22 is off
     C                     TESTB'5'       F0         22    21 is off
     C  N21N22             BITOF'5'       F0               Both on
     C  N21 22             BITON'5'       F0               F0 on/F1 off
     C                     TESTB'6'       F1         21    22 is off
     C                     TESTB'6'       F0         22    21 is off
     C  N21N22             BITOF'6'       F0               Both on
     C  N21 22             BITON'6'       F0               F0 on/F1 off
     C                     TESTB'7'       F1         21    22 is off
     C                     TESTB'7'       F0         22    21 is off
     C  N21N22             BITOF'7'       F0               Both on
     C  N21 22             BITON'7'       F0               F0 on/F1 off
     C                     ENDSR
     OSRCF    E                UPDATE
     O                         SRCDTA    92
**
ABCDEFGHIJKLMNOPRASTUVWXYZABCDEFGHIJKLMNOPRSTUVWXYZABCDEFGHIJKLMNOPRSTUVWXYZABCZ
**
`?@#\^#&&*&((*&)_*(_{}|:"<>?1356768890-=[]?',./WQRTADFADSFASDFM,.HJUM<;'P[]-90
**
KGJKYIOP90-86978LL/.,GNMHGJ467777980-=21342345RT^%^*&(&)PO":{P{}||;'/DX*&&ASFDGD
**
""LKLK"KL8=98-78695*&\#@_*+(*L;KJHJKHFYIRTIJ{POI_)798)(6(TYGL:KJ{IU(U8_*(UJL;KJU
**
HDGHJYU567909-9IO:KL:?L';P{}{P|&*(%^74%#@\%@#RWDGFUYTIKIOIP0P{{}}|";L/>GFJLL"P+7


 utirei 回复于:2005-12-08 09:10:15

as/400上面的md5加密算法?


 leason 回复于:2005-12-08 14:32:40

期待中。。。。


 maxmao 回复于:2006-03-20 19:03:57

V5R3 的 DB2 己經支援資料加密了   :D

CREATE TABLE emp(id VARCHAR(16) FOR BIT DATA,name VARCHAR(50))

SET ENCRYPTION PASSWORD = 'protect‘ /* set the default to use inthis program */
INSERT INTO emp VALUES(ENCRYPT('112233'), 'BOB SANDERS' ) /*use the default */

SELECT DECRYPT_CHAR(id), name FROM emp   /* no need to specify apassword use the default which has been set */
OR
SELECT DECRYPT_CHAR(id, ‘protect’), name FROM emp /* explicitly specify the password */




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=637580
转载请注明作者名及原文出处



收藏本页到: