使用MD5算法加密VFP数据

使用MD5算法加密VFP数据,第1张

使用MD5算法加密VFP数据,第2张

使用MD5算法加密VFP数据

我们的VFP数据太公开了。只要用Excel打开一张DBF表,里面的数据就一览无余了。如果数据是敏感的,这将是一件坏事。例如,我的数据输入员的程序登录密码放在一个VFP表中,这个表是加密的。即使我用Excel打开DBF表,我也看不到密码。请从随书附带的数据磁盘中查看此代码,以供参考。
-

********md5.prg**********

函数LShift(lvalue,iShiftBits)
IF iShiftBits = 0
返回lvalue
ELSE
IF iShiftBits = 31
IF BITAND(lvalue,1)0
返回0x 80000000
ELSE
返回0
ENDIF
ENDIF

IF BITAND(lvalue,m _ L2 power(31-iShiftBits))0
RETURN BITOR((BITAND(lvalue,m _ lon bits(31-(iShiftBits+1)))* m _ L2 power(iShiftBits)),0x 80000000)
ELSE
RETURN(BITAND(lvalue,m _ lon bits(31-iShiftBits))* m _ L2 power(iShiftBits))
ENDIF[/br

函数RShift(lvalue,iShiftBits)
IF iShiftBits = 0
返回lvalue
ELSE
IF iShiftBits = 31
IF BITAND(lvalue,0x 80000000)
返回1
ELSE
返回0
ENDIF
ENDIF
RS hift 2 = INT(br

返回RShift2
ENDFUNC

函数RotateLeft(lvalue,iShiftBits)
RETURN BITOR(l shift(lvalue,iShiftBits),RS shift(lvalue,(32 - iShiftBits)))
ENDFUNC

函数AddUnsigned(lX,lY)

lX8 = BITAND(lX,0x80000000)
lY8 = BITAND(lY,0x80000000)
lX4 = BITAND(lX,0x40000000)
lY4 = BITAND(lY,0x40000000)

lResult = BITAND(lX,0x3FFFFFFF) + BITAND(lY,0x3FFFFFFF)

IF BITAND(lX4,lY4)0
lResult = BITXOR(BITXOR(lResult,0x80000000),lX8),lY8)
ELSE
IF BITOR(lX4,lY4) 0
IF BITAND(lResult,0x 400000000)0
lResult = BITXOR(BITXOR(BITXOR(lResult,000000

C

函数md5_F(x,y,z)
返回BITOR(BITAND(x,y),BITAND(BITNOT(x),z))
ENDFUNC

函数md5_G(x,y,z)
RETURN BITOR(BITAND(x,z),BITAND(y,BITNOT(z)))
ENDFUNC

函数md5_H(x,y,z)
返回BITXOR(BITXOR(x,y),z)
ENDFUNC

函数md5_I(x,y,z)
RETURN BITXOR(y,BITOR(x,BITNOT(z)))
ENDFUNC

过程md5_FF(a,b,c,d,x,s,ac)
a = AddUnsigned(a,add unsigned(add unsigned(MD5 _ F(b,c,d),x),ac))
a = RotateLeft(a,s)
a = AddUnsigned(a,b)
ENDPROC

过程md5_GG(a,b,c,d,x,s,ac)
a = AddUnsigned(a,add unsigned(add unsigned(MD5 _ G(b,c,d),x),ac))
a = RotateLeft(a,s)
a = AddUnsigned(a,b)
ENDPROC

过程md5_HH(a,b,c,d,x,s,ac)
a = AddUnsigned(a,add unsigned(add unsigned(MD5 _ H(b,c,d),x),ac))
a = RotateLeft(a,s)
a = AddUnsigned(a,b)
ENDPROC

过程md5_II(a,b,c,d,x,s,ac)
a = AddUnsigned(a,add unsigned(add unsigned(MD5 _ I(b,c,d),x),ac))
a = RotateLeft(a,s)
a = AddUnsigned(a,b)
ENDPROC

函数hex(lbyte)
x = ' '
do while lbyte > 0
if lbyte > = 16
y=lbyte
else
y = lbyte
endif
if y = 0
x = str(y,1)+x
else
x = chr(65+y-10)+x
endif
lbyte =(b

函数WordToHex(左值)

lResult=''
FOR lCount = 0到3
lByte = BITAND(RS shift(lvalue,lCount * BITS_TO_A_BYTE),m _ lon BITS(BITS _ TO _ A _ BYTE))
lResult = lResult+RIGHT(" 0 "+Hex(lByte),2)
end FOR
返回lResult

ENDFUNC

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 使用MD5算法加密VFP数据

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情