《关于vfp的加密》doc版

《关于vfp的加密》doc版

ID:34350982

大小:45.80 KB

页数:7页

时间:2019-03-05

《关于vfp的加密》doc版_第1页
《关于vfp的加密》doc版_第2页
《关于vfp的加密》doc版_第3页
《关于vfp的加密》doc版_第4页
《关于vfp的加密》doc版_第5页
资源描述:

《《关于vfp的加密》doc版》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、关于VFP的加密  Vfp语言易学好用,其排序、检索速度之快,是VB和DELPHI所不及的,但其保密性差是也大家公认的。只要稍为懂一定数据库知识的人,一打开数据表,其内容便一目了然,且可任意更改,其保密性和安全性可想而知,这还只是其一。其二:随着UNFOXpro.exe和Refox7.exe等的出现,你辛辛苦苦编的程序,即使编译成EXE文件,一经UN或RE则你煞费苦心设置的版权符、验证关、口令、密码等都如同虚设。那么Vfp的保密性差的弱点就没办法避免吗?NO!办法肯定有,这里就先谈谈“数据表的加密问题”

2、,以下就是我的一点粗浅看法,请网友们踊跃讨论。  数据表加解密常见的有以下两种方式:  1、直接在磁盘上加解密,即在关闭数据表文件后,对已保存在磁盘上的数据表文件进行加密,在每次打开数据表文件前,先在磁盘上对数据表解密,然后再供Vfp将其打开,其优点是加解密容易,一般程序员用Vfp提供的低级文件函数都能编出加解密程序;缺点是:在WIN的多任务环境下,很容易取得解密后的数据,另外一旦系统出错,还未来得及加密就重新启动系统,那保留在磁盘上的就是解密后的数据,对保密性能要求稍微高一些的程序员,一般不会采用此方

3、式。  2、在内存中对数据表的字段进行加解密,这又可分两种:  A、象《远程续缘》1999年第一期第8个问题那样用ASCII码进行+、-、*、/运算加解密,但这种方法有个缺点即当加或乘时,其值容易大于255(FFH)即大于ASCII码的最大值,这时无法用CHR()换成字符保存,如对大于255的数据不加密,则解密时又会带来麻烦,即同是254,哪个是加密后的254,哪个是未加密的254?这也就是为何有人问汉字解密后会出现许多同音汉字的原因。  B、完全利用Vfp3.0以上版本提供的位操作函数bitxor()

4、进行加密,该加密方法是C语言及汇编语言常用的加密方法,其原理是将一字节的8位二进制数与另一个二进制数进行异或操作,如用6个以上密匙(口令)进行加密,则在不知其密匙的情况下,是很难解密的。它还有一个优点是加解密用同一模块,即一次执行是加密,再次执行为解密。以下是加解密例程(注:调用该过程时,需加密的数据表已打开,且为当前工作区):ProcedurejjmgcparaPass&&Pass是密匙,设Pass='wjgwkj'privallmccd=len(Pass)&&取Pass密匙长度Sjbzds=fcou

5、()DimeJmsz(Sjbzds)GotopScanScattoJmsz&&读一条记录到数组ForI=1toSjbzdsIftype("Jmsz(i)")="C"&&该字段是字符型吗Zdcd=len(trim(Jmsz(i)))&&取字段长度mc1=1Forx=1toZdcdJm1=asc(subs(Jmsz(I),x,1))&&取字段中一个字节jm2=asc(subs(Pass,mc1,1))&&取Pass中一个字节jmjg=chr(bitxor(jm1,jm2))&&将JM1按JM2的值异或Jms

6、z(I)=stuf(Jmsz(I),x,1,jmjg)&&进行加密替换mc1=iif(mc1>mccd,1,mc1+1)&&判断MC1是否大于mCCDEndfEndiEndfGathfromJmsz&&将加解密的数据,写入当前记录Endsretu3、在内存中直接对整个数据表文件(.DBF)加解密,这也有两种方法:A、借助现成工具,犹如UCDOSSDK所提供的DBFKey()函数那样,与FOX无缝连接,不装入LoadSdk用USE是无法打开数据表的,其优点是显而易见的,但目前在WIN环境下还找不到这样的工

7、具,而自己制作其难度大,一般程序员做不到。B、用Vfp提供的低级文件函数,配合CreateCurso-SQL和Insert-SQL命令可实现类似UCDOSSDK所达到的功能,其原理是:先用低级文件函数自定义一个文件头(或着叫文件格式,象BMP、DOC等都有自己的文件格式),在文件头中可包含:文件头长度、字段名、字段类型、字段长度、每条记录长度、密匙(口令字)等,接着将您的记录按文件头规定的格式加密后顺序写入文件中,由于文件格式是您自定义的,所以一般是无法打开读取的。在使用时,用低级文件函数从您自定义的文

8、件中先读取文件头的内容,读到字段名、字段类型、字段长度时,将其用CreateCurso-SQL到新建的数据表中,读取记录后先解密,再用Insert-SQL到刚建的数据表中,然后就可正常使用了,结束使用需存盘时再按上述方法写入文件。该方法始终是再内存中进行的,故即使系统出错,重新启动系统也无妨。用这种方法加解密确实是在Vfp状态下比较好的办法,但可能对于没学过C语言或汇编的朋友,对文件格式等不理解,由于代码较长,无法列出,如网友们有兴趣,我可

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。