文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发其他语言加密数据文件和EXE文件(一)
精品推荐
特别推荐
·控制面板知多少
·给你十条学习Ruby语言的理由
·分页管理机制
·Perl 语言的重要价值体现
·经验技巧:分享两条Delphi开发经验
·Java编程思想:面向对象的逻辑思维方法
·Samba系统简介
热点TOP10
·AIX 5L 学习大纲/简易教程(2)(未经许可,请勿COPY)
·DENX U-Boot及Linux使用手册
·EZ-USB 68013A开发指南
·图象处理中的边缘检测------canny算子
·Visual C++ ADO数据库编程入门
·利用 wordXP 实现自动排班
·UDT协议-基于UDP的可靠数据传输协议
·XPCOM--LINUX下的组件开发技术
·MyEclipse JSF 快速入门中文版(上)
·samba和openldap结合实战
·AIX 5L 学习大纲/简易教程(1)(未经许可,请勿COPY)
·Microsoft Windows XP Embedded 开发工具概述
·eMbedded Visual C++开发入门
·在VC6中创建wxWidgets项目[附图]
·数值计算程序大放送-线性代数方程组
·列表视图控件
·visual studio 2005 简体中文团队开发版 SQL server 2005简体中文版下载
·Visual Studio 2005:在 Visual C++ 中开发自定义的绘图控件
·汇编语言工具下载
·多文档界面(MDI)

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

日期:2007年5月2日 作者: 查看:[大字体 中字体 小字体]



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

  先谈有关数据表 (DBF)(下同)的加密问题。

  数据表的加解密常见的有三种方式:

  1、直接在磁盘上加解密,即在关闭数据表文件后,对已保存在磁盘上的数据表文 件进行加密,在每次蚩荼砦募埃仍诖排躺隙允荼斫饷埽缓笤俟〧OX将其打开,其优点是:加解密简单容易,一般程序员用FOXPOR提供的低级文件函数都能编 出加解密程序。缺点是:在 WINDOWS的多任务环境下,很容易取得解密后的数据,且一旦系统出错,还未来得及加密就重新启动系统,那保留在磁盘上的就是解密后的数据,稍微懂得一点WINDOWS系统特性的程序员,一般不会采用此方式。

  2、在内存中对数据表的字段进行加解密,这又可分两种:

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

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

  以下是其加解密例程:

  注:调用该过程时,需加密的数据表已打开,且为当前工作区

  Procedure jjmgc para Pass  &&Pass是密匙,假设Pass='wjgwkj'

  priv all

  mccd=len(Pass)       &&取Pass密匙长度

  Sjbzds=fcou()       &&取字段个数

  Dime Jmsz(Sjbzds)     &&根据字段个数建立一维数组

  Go top

  Scan

    Scat to Jmsz      &&读一条记录到数组

    For I=1 to Sjbzds

     If type("Jmsz(i)")="C"          &&该字段是字符型吗

      Zdcd=len(trim(Jmsz(i)))       &&取字段长度

      mc1=1

      For x=1 to Zdcd

        Jm1=asc(subs(Jmsz(I),x,1))     &&取字段中一个字节

        jm2=asc(subs(Pass,mc1,1))      &&取Pass中一个字节

        jmjg=chr(bitxor(jm1,jm2))      &&将JM1按JM2的值异或

        Jmsz(I)=stuf(Jmsz(I),x,1,jmjg)   &&进行加密替换

        mc1=iif(mc1>mccd,1,mc1+1)      &&判断MC1是否大于mCCD

      Endf

     Endi

    Endf

    Gath from Jmsz     &&将加解密的数据,写入当前记录

  Ends

  retu

  以上代码在WINDOWS 98 Microsoft Visual FoxPro 3.0以上版本通过。

  3.在内存中直接对整个数据表文件(.DBF)加解密,这也有两种方法:

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




上一篇:在Pocket PC上编写游戏之一

下一篇:创建基于MIDP的应用

加密数据文件和EXE文件(一) 相关文章:
·MPEG、RM、WMV电影文件格式转换指南
·EasyRecovery 604硬盘数据恢复软件技巧
·清除垃圾文件DIY
·怎样清除硬盘及系统垃圾文件?
·ASP.NET上传文件的实例
·TCP/IP编程实现远程文件传输
·dll文件下载
·Windows无法访问指定设备,路径或文件.您可能没有合适的权限访问这个项目
·asp.net(C#)海量数据表高效率分页算法(易懂,不使用存储过程)
·软件狗[Dongles]的加密与解密技术
加密数据文件和EXE文件(一) 相关软件:
·最强文件加密锁2007
·巨城文件保险柜 v2.3
·ACCESS数据库教程 北京大学的ACCESS教程
·爆出网站数据库路径
·Ultra RM Converter(Real文件转换分割,合并)V3.3.0916 汉化版
·Allok Video Splitter(视频文件分割)V2.2 0726 修正II版
·联想OEM Winxp的5个文件
·U盘加密器v2.8
·逐步精通数据库 sql server 视频教程
·文件夹加密器V9.6

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot