主题:[讨论]如何異化數據表?
GEORGECHIN
[专家分:440] 发布于 2010-03-23 18:52:00
大家都知道.DBF的數據格式,只要用戶裝上VFP,就可以直接修改表中數據,偶然從一本書上看到可以把.DBF的數據異化成"火星文",其方式是:用指定的軟件登錄時先將數據表同化成"地球文",退出軟件時,再將數據表異化成"火星文".也就是說,其數據必須要經過指定的軟件轉異,才能夠操作.不知哪位朋友可以給出一個詳細的代碼出來?
回复列表 (共4个回复)
沙发
fyren [专家分:230] 发布于 2010-03-24 08:50:00
这类转换本来就是建在数据库一一对应上面,从一个所谓的“地球文”转到所谓的“火星文”
还是就是通过ANSI 数值加密和解密的一个过程!
下面就是一个加密和解密的函数,希望对你有用!
*****************************
*此code函数为数据加密,加密后的密码将成不可识
******************************
Function Code
Parameter PASS_STR, SEED
Private PASS_STR, SEED, STR_LEN, RVALUE, I, PLACE
If Parameters()=1
SEED = 15
Endif
If SEED>20
SEED = 15
Endif
Do Case
Case Type('pass_str')='C'
PASS_STR = Trim(PASS_STR)
Case Type('pass_str')='N'
PASS_STR = Str(PASS_STR)
Otherwise
= Messagebox('The parameter passed to the function '+Chr(13)+'CODE is not acceptable. Function '+Chr(13)+"will return '***'.", 48, "岿粇")
Return ('***')
Endcase
STR_LEN = Len(Trim(PASS_STR))
SEED = SEED+89
RVALUE = ''
For I = 1 To STR_LEN
PLACE = Asc(Substr(PASS_STR, I, 1))+SEED-I
RVALUE = RVALUE+Chr(PLACE)
Endfor
Return (RVALUE)
Endfunc
******code结束****************
******************************
*此recode函数为code函数的反运算,用于解密
*******************************
Function recode
Parameter PASS_STR, SEED
Private PASS_STR, SEED, STR_LEN, RVALUE, I, PLACE
If Parameters()=1
SEED = 15
Endif
If SEED>20
SEED = 15
Endif
STR_LEN = Len(Trim(PASS_STR))
SEED = SEED+89
RVALUE = ''
For I = 1 To STR_LEN
PLACE = Asc(Substr(PASS_STR, I, 1))-SEED+I
If PLACE<32 .Or. PLACE>128
= Messagebox('You are trying to use DECODE on a string '+Chr(13)+'that was not coded properly. The function '+Chr(13)+'will return "******"', 48, "岿粇")
Return ('******')
Else
RVALUE = RVALUE+Chr(PLACE)
Endif
Endfor
Return (RVALUE)
Endfunc
******recode结束****************
板凳
GEORGECHIN [专家分:440] 发布于 2010-03-24 23:59:00
謝謝你的回復,但寫的和書上的一樣,僅從VFP的角度上看,真的好難看懂啊.水平太菜鳥!有時間加注一下可不可以啊?
3 楼
fyren [专家分:230] 发布于 2010-03-25 08:54:00
我是菜的啊!
这代码慢慢看不难的!!!呵呵!!
以前我的老师说过不懂装懂你慢慢就懂了!不懂也不要怕!
4 楼
kosung [专家分:910] 发布于 2010-03-28 01:22:00
嘿嘿,表加密这个方法是不那么成熟可靠的,还要考虑一下如果异常退出的话你的这种方法就完蛋了。
倒还不如将加密的方法写在程序里,用的时候引用解密函数的值,这样的效果会好些,当然这样会牺牲速度,会带来一些不便,特别是在进行数据测试时。
我来回复