VFP如何对数据库进行加密
编号:QA000631
建立日期: 1999年3月12日 最后修改日期:1999年3月12日
所属类别:
david:
vfp5.0
win95
请问:程序编完连编成EXE文件后,如何对安全管理信息(如记录系统登录用户信息的数据库)和记录系统资料的数据库进行保护加密?
回答:
关于这个问题,通常有三种做法:
1.用asc(),chr() 等函数对字段内容做转换;
2.用低级文件函数对库文件进行转换;
3.不用库形式,而用文本文件形式记录信息.并用低级文件函数进行加密。
第2,3种方法,原理一样,都需要用设计一个函数用来加密文件,一个函数用来解密文件.每次系统运行时先解密,修改内容保存后,运行加密函数。使用时不太方便.设计表单时,不直观。如果加密等级要求不高,宜用第一种方法。
关于第一种方法举个例子:
如要对密码字段进行加密,password M (4) (字段类型为备注型较好,定义成字符型也可以,但没有备注型灵活)。假设密码长度规定为8,内容为 1234xxxx (x表示空)
lpassword='1234'+space(4)
lpasswordlen=8
mpassword=''
for ln=1 to lpasswordlen
mpassword=mpassword+chr(abs(asc(subs(lpassword,ln,1))+ln)-255))
endfor
?mpassword
加密形式可做许多复杂的变化,可考虑密码加密参照用户名,使同一密码不同用户密文也不同 。这种做法要注意的是,对密码为空或密码为同一字符的情况,密文不能有明显的规律。不管什么加密方法,只要解密者有机会使用软件,并有权设置密码,就能够通过设置有规律的密码,来比较明文和密文的差别,算出密钥。
可考虑采用这种思路: 刚才密文的一个字节对应明文的一个字节,位置一一对应, 还可让明文的1,2,3,4,5,6,7,8字节,对应密文的8,23,1,34,56,3,7,9字节,密文的其它字节随机写入.或密文的对应字节位置是根据明文按某个算法算出,也可用几个字节对应明文的一个字节等等,用备注型的好处显而易见!
另有一偏门的方法: 通常库文件的扩展名为 .dbf,可用其它扩展名,如 .arj .zip .aaa 之类,只要打开库时加扩展名就行。
此问题由何翊夫回答。
| |
|
|
| |
|
|