当前位置:白小姐输尽光全年资料大全 > 取字段数 >

如何加密数据文件和EXE文件(一)

  FOX类编程语言易学好用,在我国有着非常庞大的编制和使用队伍,由于其十分普及,在用资源非常丰富,加上其排序、检索速度之快,是VB和DELPHI在数据库处理上所不及的,因此,在未来很长一段时间里,是很难被其他语言所替代的。但其保密性差是也大家公认的。也许正是因为它的普及,只要稍为懂一点数据库知识的人,一打开数据表,其内容便一目了然,且可任意更改,其保密性和安全性可想而知。随着UNFOXpro.exe、Refox7.exe和Unfoxall等反编译软件的出现,你辛辛苦苦编的程序,即使编译成EXE文件,一经反编译,则你煞费苦心设置的版权符、验证关、口令、密码等都如同虚设。那么FOX类编程语言保密性差的弱点就真的没有办法避免吗?当然部是!办法肯定有。下面就这个问题,谈谈我的看法和我所采取的一些措施:

  1、直接在磁盘上加解密,即在关闭数据表文件后,对已保存在磁盘上的数据表文件进行加密,在每次蚩数据表文件前,先在磁盘上对数据表解密,然后再供FOX将其打开,其优点是:加解密简单容易,一般程序员用FOXPOR提供的低级文件函数都能编出加解密程序。缺点是:在WINDOWS的多任务环境下,很容易取得解密后的数据,且一旦系统出错,还未来得及加密就重新启动系统,那保留在磁盘上的就是解密后的数据,稍微懂得一点WINDOWS系统特性的程序员,一般不会采用此方式。

  A、用ASC()函数把字符转换成ASCII码,再对ASCII码进行 + - */运算,然后再用CHR()函数把运算后的ASCII码转换成字符,进行加解密。但这种方法有个缺点,即当加或乘时,其值容易大于255(FFH)即大于ASCII码的最大值,无法用CHR()再转换成字符,如果对运算后大于255的数据不加密,则解密时又会带来麻烦,即同是255,哪个是加密后的255,哪个是未加密的255呢?这也就是有人问为何汉字解密后会出现许多 同音汉字的原因。

  B、利用Vfp3.0以上版本提供的位操作函数bitxor()进行加解密,该加解密方法是C语言及汇编语言常用的加密方法,其原理是将一字节的8位二进制数与另一个二进制数进行异或操作,如用6个以上密匙(口令)进行加密,则在不知其密匙的情况下,是很难解密的。它还有一个优点是加解密用同一模块,即一次执行是加密,再次执行为解密。

  A.借助现成工具,犹如UCDOSSDK所提供的DBFKey()函数那样,与FOX无缝连接,不装入LoadSdk用USE是无法打开数据表的,其优点是显而易见的,但目前在WINDOWS环境下还找不到这样的工具,而自己制作其难度大,一般程序员做不到。

  先用低级文件函数自定义一个文件头(或着叫文件格式,象BMP、DOC等都有自己的文件格式),在文件头中可包含:文件头长度、字段名、字段类型、字段长度、每条记录长度、密匙(口令字)等,接着将您的记录按文件头规定的格式加密后顺序写入文件中,由于文件格式是您自定义的,所以一般是无法打开读取的。在使用时,用低级文件函数从您自定义的文件中先读取文件头的内容,读到字段名、字段类型、字段长度时,用CreateCurso-SQL 将其到新建的数据表中,读取记录后先解密,再用Insert-SQL到刚建的数据表中,然后就可正常使用了。结束使用需存盘时再按上述方法写入文件,该方法始终是在内存中进行的,故即使系统出错,重新启动系统也无妨。

  用这种方法加解密确实是在Vfp状态下比较好的办法,但可能由于大家对文件格式及文件头的概念不理解。实际起来有一定难度。我根据这个办法编制的可视类(vfpjmdbf.vcx)是专为VFP3.0以上版本制作的,对此感兴起的朋友可到我的网站:

  以上我们只谈了如何用FOX类编程语言加密数据表的问题,从中大家会看到,如果只对数据表加解密,而对执行加解密的程序代码不加密,用Unfoxall等反编译软件将您的EXE文件反编译,那您的加解密方法及密匙(口令字),就很容易暴露,其加密的可靠性就有问题,那么如何才能加密和保护您的EXE程序呢?

http://lumkeslaw.com/quziduanshu/125.html
点击次数:??更新时间2019-06-03??【打印此页】??【关闭
  • Copyright © 2002-2017 DEDECMS. 织梦科技 版权所有  
  • 点击这里给我发消息
在线交流 
客服咨询
【我们的专业】
【效果的保证】
【百度百科】
【因为有我】
【所以精彩】