| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1208 人关注过本帖
标题:[求助]关于数据库DBF文件数据加密问题
只看楼主 加入收藏
xingtaihh
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2005-12-14
收藏
 问题点数:0 回复次数:6 
[求助]关于数据库DBF文件数据加密问题

前几天有一位会员提出要一个简单的登录的界面代码,我提供一个,这时又想起一直困惑我的问题,就是存放用户名和密码的DBF文件数据的安全,因为会VFP的人可以轻松打开该文件,所以我想请大家帮我举例说明如何给数据加密,用算法就可以,不要用专用软件,因为算法我认为更安全。以下是我写的一段登录代码,用的是一个mima.dbf中存有用户名和密码,然后比较文本框中的数据,从而验证登录。

i=i+1
SELECT mima
LOCATE FOR mima.username=THISFORM.combo1.Value
DO CASE
CASE i<=3 AND FOUND() AND THISFORM.text1.Value=mima.password &&输入次数未超过3次且用户名正确、口令正确
operat=THISFORM.combo1.Value
INSERT INTO login(user_id,user_name,login_time) VALUES(mima.user_id,mima.user_name,DATETIME())
messagebox("正在登陆系统!",0+48+0,"登陆!")
thisform.release
do c:\gz\menu\menu.mpr
CASE i<=3 AND FOUND() AND THISFORM.text1.Value!=mima.password &&输入次数未超过3次且用户名正确、口令不正确
MESSAGEBOX("你输入的密码有误,请重新输入!","系统提示信息")
THISFORM.Text1.Value=""
THISFORM.Text1.Setfocus
CASE i<=3 AND NOT FOUND() &&输入次数未超过3次且用户名不正确
MESSAGEBOX("操作员选择有误,请重新输入!","系统提示信息")
THISFORM.combo1.Value=""
THISFORM.Text1.Value=""
THISFORM.combo1.Setfocus
CASE i>3 &&输入次数超过3次
MESSAGEBOX("您是非法用户,本系统将自动退出!","系统提示信息")
quit
ENDCASE

搜索更多相关主题的帖子: DBF 数据库 文件 
2006-09-16 22:36
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11798
专家分:43421
注 册:2006-5-13
收藏(1)
得分:0 
给你一个链接,这是本人给数据库(表)进行简单加锁(密)的文章,因为仅仅是对表头的内容进行改写,记录的内容并没有进行加密,所以我称之为加“锁”,数据库表加锁之后,在VFP环境下无法打开表浏览内容。
http://www.qs98.com/expe/expe0013.htm

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2006-09-17 08:39
xingtaihh
Rank: 1
等 级:新手上路
帖 子:51
专家分:0
注 册:2005-12-14
收藏
得分:0 
这个链接我看了,不是我很想要的,能再举个例子吗
2006-09-21 00:15
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
将表Mima中的密码字段password加密和解密,与将整个表加密和解密结合起来

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2006-09-21 01:06
zhedit
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-9-21
收藏(1)
得分:0 
有一个简单的方法,如果对保密不是要求很高可以用:

比如:

LOCATE FOR mima.username=THISFORM.combo1.Value

换成:
LOCATE FOR mima.username=THISFORM.combo1.Value+1

意思是在表里存储的数据是真正的密码经过运算后的值,别人即使打开你的表,看到的密码也不是
你设置的密码。
上面+1是举例,你可以在程序里面设置更复杂的运算。
2006-09-21 11:53
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11798
专家分:43421
注 册:2006-5-13
收藏
得分:0 
如果要求较高的保密程度,则可以对整个表文件按一定的算法进行加密。在VFP下可利用低级函数对表文件进行操作,每次读一个字节,进行换算后又写回去,然后再读下一个字节,一直把整个文件进行加密换算。要使用这个表时则进行解密操作。这样的加密解密操作需要一定的时间,若表文件太大的话则需要考虑等候时间的问题。
加密解密的换算可采用高低字节交换的方式,也可以通过密码表进行转换,这样破译的难度就更大些。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2006-09-21 12:31
fxzmodel
Rank: 2
等 级:新手上路
威 望:4
帖 子:50
专家分:0
注 册:2006-2-20
收藏(1)
得分:0 
VFP下加密,哎,不过是给自己一点心理安慰罢了.即使你可以对数据加密防止查看,但是无法防止数据被修改.举个例子,我拥有一个低级用户的权限,但是我可以将数据库表中高级用户的密码用我自己的密码加密后的密文进行覆盖.这样我便可以我自己的密码登陆高级用户的ID了.
以前我也作过VFP数据库的加密,采用的方法是将数据库表的数据全部以字符的形式存储,然后用字符的ASCII值与一个自己设置的数进行异或运算.一次运算加密.再运行一次即可还原出明文.但我做哪个东西也仅仅是为了做毕业论文糊弄老师.没什么意义.下面有加密模块的源代码.
sele=sele()
filename=dbf()
fpa=fcount(sele)
do while fpa>0
go top
do while .not.eof()
fname=field(fpa)
dime Originalcode(1)
command1="scatter fields "+fname+" to "+"Originalcode"
&command1
Ciphertext=''
for i=1 to len(trim(Originalcode))
tempchr=bitxor(asc(subs(Originalcode,i,1)),123)
Ciphertext=Ciphertext+chr(tempchr)
endfor
command2="repl "+fname+" with "+"Ciphertext"
&command2
skip
loop
enddo
fpa=fpa-1
loop
enddo
2006-09-21 22:56
快速回复:[求助]关于数据库DBF文件数据加密问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016060 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved