程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 用DELPHI實現文件加密壓縮

用DELPHI實現文件加密壓縮

編輯:Delphi
  概述:
  在這篇文件中,講述對單個文件的數據加密、數據壓縮、自解壓的實現。同樣,也可以實現對多個文件或文件夾的壓縮,只要稍加修改便可實現。
  
  關鍵字:加密壓縮、Zlib、流、資源文件
  
  引 言:
  在日常中,我們一定使用過WINZIP、WINRAR這樣的出名的壓縮軟件,就是我們開發軟件過程中不免要遇到數據加密、數據壓縮的問題!本文中就這一技術問題展開探討,同時感謝各位網友的技巧,在我每次面對問題要解決的時候,是你們辛苦地摸索出來的技巧總是讓我豁然開朗,問題迎刃而解。本篇文章主要是運用DELPH的強大的流處理方面的技巧來實現的數據加密壓縮,並用於實際的軟件程序開發中,將我個人的心得、開發經驗寫出來與大家分享。
  
  1、  系統功能
  1)、數據壓縮
  使用Delphi提供的兩個流類(TCompressionStream和TDecompressionStream)來完成數據的壓縮和解壓縮。
  2)、數據加密壓縮
  通過Delphi編程中“流”的應用實現數據加密,主要采用Tstream的兩個派生類Tfilestream、Tmemorystream 來完成的;其中數據壓縮部分采用1)的實現方法
  3)、雙擊壓縮文件自動關聯解壓
  通過更改注冊表的實現擴展名與程序文件的關聯,主要采用Tregistry;並且,API函數SHChangeNotify實現注冊效果的立即呈現。
  4)、可生成自解壓文件
  自解壓的文件實現數據壓縮1)與數據加密壓縮2)的自動解壓;並且,通過資源文件的使用實現可執行的自解壓文件與數據文件的合並,來完成數據的自解壓實現。
  
  2、  系統實現
  2.1、工作原理
  
  
  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&nbs

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一頁  >> 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved