天天加油 - 助您成才
用Delphi实现文件加密压缩技巧
您正在看的DELPHI是:用Delphi实现文件加密压缩技巧。
  引 言:
  在日常中,我们一定使用过WINZIP、WINRAR这样的出名的压缩软件,就是我们开发软件过程中不免要遇到数据加密、数据压缩的问题!本文中就这一技术问题展开探讨,同时感谢各位网友的技巧,在我每次面对问题要解决的时候,是你们辛苦地摸索出来的技巧总是让我豁然开朗,问题迎刃而解。本篇文章主要是运用DELPH的强大的流处理方面的技巧来实现的数据加密压缩,并用于实际的软件程序开发中,将我个人的心得、开发经验写出来与大家分享。
  
  1、 系统功能
  1)、数据压缩
  使用DELPHI提供的两个流类(TCompressionStream和TDecompressionStream)来完成数据的压缩和解压缩。
  2)、数据加密压缩
  通过Delphi编程中“流”的应用实现数据加密,主要采用Tstream的两个派生类Tfilestream、Tmemorystream 来完成的;其中数据压缩部分采用1)的实现方法
  3)、双击压缩文件自动关联解压
  通过更改注册表的实现扩展名与程序文件的关联,主要采用Tregistry;并且,API函数SHChangeNotify实现注册效果的立即呈现。
  4)、可生成自解压文件
  自解压的文件实现数据压缩1)与数据加密压缩2)的自动解压;并且,通过资源文件的使用实现可执行的自解压文件与数据文件的合并,来完成数据的自解压实现。
  
  2、 系统实现
  2.1、工作原理
  [[The No.1 Picture.]]
  2.2、关键技术的讲述
  (一)ZLIB
  1)、基类 TCustomZlibStream:是类TCompressionStream和TDecompressionStream 类的基类,它主要有一个属性: OnProgress,在类进行压缩或解压缩的过程中会发生这个的事件 。
  格式:Procedure OnProgress (Sender: TObject); dynamic;
  2)、压缩类TCompressionStream:除了继承了基类的OnProgress 属性外,又增加了一个属性:CompressionRate,它的定义如下:
  Property CompressionRate: Single read GetCompressionRate;
  通过这个属性,可以得到压缩比。
  它的几个重要的方法定义如下:
  Constructor TCompressionStream.Create (CompressionLevel: TCompressionLevel; Dest: TStream);
  其中:TcompressionLevel(压缩类型),它由如下几个定义:
     1)、 clNone :不进行数据压缩;
     2)、 clFastest:进行快速压缩,牺牲压缩效率;
     3)、 clDefault:进行正常压缩;
     4)、 clMax: 进行最大化压缩,牺牲速度;
  Dest:目的流,用于存放压缩过的数据。
  Function TCompressionStream.Write (const Buffer; Count: Longint): Longint;
  其中:Buffer:需要压缩的数据;
     Count: 需要压缩的数据的字节数;
  函数返回写入流的字节数。
  注意:压缩类TCompressionStream的数据只能是写入的,如果试图从其内部读取数据,将发生一个"Error "异常。需要压缩的数据通过方法 Write写入流中,在写入的过程中就被压缩,并保存在由构造函数提供的内存流(TmemoryStream)中,同时触发 OnProcess 事件。
  3)、 解压缩类 TDecompressionStream :和压缩类TcompressionStream相反,它的数据是只能读出的,如果试图往其内部写数据,将发生一个"Error "异常。
  它的几个重要方法定义如下:
  构造函数:Constructor Create(Source: TStream);
    其中:Source 是保存着压缩数据的流;
  Function Read(var Buffer; Count: Longint): Longint;
    数据读出函数,Buffer: 存数据缓冲区;Count: 缓冲区的大小;
    函数返回读出的字节数。数据在读出的过程中,数据被解压缩,并触发 OnProcess 事件。
  
  (二)流
  在Delphi中,所有流对象的基类为TStream类,其中定义了所有流的共同属性和方法。
  TStream类中定义的属性如下:
  1)、Size:此属性以字节返回流中数据大小。
  2)、Position:此属性控制流中存取指针的位置。
  
  Tstream中定义的虚方法有四个:
  1)、Read:此方法实现将数据从流中读出,返回值为实际读出的字节数,它可以小于或等于指定的值。
  2)、Write:此方法实现将数据写入流中,返回值为实际写入流中的字节数。
  3)、Seek:此方法实现流中读取指针的移动,返回值为移动后指针的位置。
  函数原形为:Function Seek(Offset:Longint;Origint:word):Longint;virtual;abstract;
  参数Offset为偏移字节数,参数Origint指出Offset的实际意义,其可能的取值如下:
  soFromBeginning:Offset为指针距离数据开始的位置。此时Offset必须大于或者等于零。
  soFromCurrent:Offset为移动后指针与当前指针的相对位置。
  soFromEnd:Offset为移动后指针距离数据结束的位置。此时Offset必须小于或者等于零。
  4)、Setsize:此方法实现改变数据的大小。
  
  另外,TStream类中还定义了几个静态方法:
  1)、ReadBuffer:此方法的作用是从流中当前位置读取数据,跟上面的Read相同。
  注意:当读取的数据字节数与需要读取的字节数不相同时,将产生EReadError异常。
  2)、WriteBuffer:此方法的作用是在当前位置向流写入数据,跟上面的Write相同。
  注意:当写入的数据字节数与需要写入的字节数不相同时,将产生EWriteError异常。
  3)、CopyFrom:此方法的作用是从其它流中拷贝数据流。
  函数原形为:Function CopyFrom(Source:TStream;Count:Longint):Longint;
  参数Source为提供数据的流,Count为拷贝的数据字节数。当Count大于0时,CopyFrom从Source参数的当前位置拷贝Count个字节的数据;当Count等于0时,CopyFrom设置Source参数的Position属性为0,然后拷贝Source的所有数据;
  
  Tstream常见派生类:
  TFileStream    (文件流的存取)
  TStringStream   (处理内存中的字符串类型数据)
  TmemoryStream   (对于工作的内存区域数据处理)
  TBl

排行

  1. 听说过WinZip软件也可以“杀毒”
  2. Delphi存取图像完整解决方案
  3. 利用Delphi开发旅游景点微机售票
  4. 在DBGrid组件中显示和编辑MEMO字
  5. 学好VC++的十大良好习惯
  6. DELPHI数据库应用程序的开发环境
  7. 汇编DEBUG全过程跟踪
  8. 汇编中的管道操作方法(一)
  9. 汇编中的管道操作方法(二)
  10. 汇编中的管道操作方法(三)
  11. 汇编进程控制的实现方法(一)
  12. 汇编进程控制的实现方法(二)
  13. 汇编中使用定时器的方法
  14. 汇编复杂形状的窗口实例学习
  15. 汇编图形界面的操作
  16. 汇编菜单和加速键(一)
  1. 听说过WinZip软件也可以“杀毒”
  2. Delphi存取图像完整解决方案
  3. 利用Delphi开发旅游景点微机售票
  4. 在DBGrid组件中显示和编辑MEMO字
  5. 学好VC++的十大良好习惯
  6. DELPHI数据库应用程序的开发环境
  7. 汇编DEBUG全过程跟踪
  8. MS Jet SQL for Access 2000中级
  9. MS Jet SQL for Access 2000中级
  10. ACCESS数据库数据传递的方法
  11. 破解Access(*.mdb)目前所有版本的
  12. 汇编中的管道操作方法(一)
  13. 汇编中的管道操作方法(二)
  14. 汇编中的管道操作方法(三)
  15. 汇编进程控制的实现方法(一)
  16. 汇编进程控制的实现方法(二)
  1. VB的程序加密方法
  2. FlexGrid控件的使用
  3. vb的CommonDialog控件的使用
  4. vb的FlexGrid控件
  5. vb的按钮控件
  6. VC防止窗口和控件闪烁的方法
  7. 基于Winsock API的VC网络编程实战
  8. 用VC实现动态改变Windows的显示特
  9. VC中利用MFC设计绘图程序初步
  10. vb的属性、方法和事件(一)
  11. vb的属性、方法和事件(二)
  12. vb控件的使用
  13. vb的控件数据
  14. vb控件简介
  15. vb程序设计
  16. vb的工具栏、对话框

最近更新

  • 推荐阅读
  • DELPHI《用Delphi实现文件加密压缩技巧》用Delphi实现文件加密压缩技巧
    关于我们 | 版权申明 | 广告服务 | 友情链接 | 网站地图 | 使用帮助 | ©2006-2008 TTADD.COM