如何在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 */
|