|
用DELPHI实现文件加密压缩(6) //立即刷新 SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
end;
2.3、加密压缩的实现 1、 生成INI临时加密文件 用于加密的INI的临时文件格式: [FILE1]//节点,在软件中使用FILE1..N可以实现多文件加密 FILENAME=压缩文件名 PASSWord=解压密码 FILESIZE=文件大小 FILEDATE=创建日期 ISJM=解压是否需要密码 如果是实现多文件、文件夹的信息存储,可以将密码关键字存在一个总的节点下。本文中仅是实现对单个文件的加密,所以只要上述格式就可以了。 2、 将数据文件与用于加密的INI文件的合并,这可以采用文件流的形式实现。 加密后文件结构图: 图(1) 图(2) 上面两种形式,可以根据实际采用。本文采用图(1)的结构。 3、 对于加密后的数据,采用ZLIB技术实现压缩存储,生成新压缩形式的文件。
2.4、文件关联的实现 见2.2 (五)
2.5、自解压的实现 1. 建立一个专门用来自解压的可执行程序文件 2. 将1中建立的文件,生成资源文件 3. 将资源文件放到本文中这个压缩工具的程序中一起编译。 4. 通过将资源文件与压缩文件的合并,生成自解压文件。 自解压文件结构图:
5.自解压实现:通过将自身文件中的加密压缩数据的分解,然后对分解的加密压缩数据再一次解压并分解出真正的数据文件。
2.6 系统程序设计
这是关于这个软件实现的核心部分全部代码,在这里详细讲述这个软件所有的技术细节。 // wnhoo_zzz.pas
unit wnhoo_zzz; interface
uses Windows,Forms,SysUtils,Classes,zlib,Registry,INIFILES, Dialogs, shlobj; type pass=string[20]; type Tmyzip = class
private { private declarations here} protected { protected declarations here } public procedure regzzz; procedure ys_file(infileName, outfileName: string;passWord:pass;isjm:boolean;ysbz:integer); function jy_file(infileName: string;passWord:pass=''):boolean; procedure zjywj(var filename:string); constrUCtor Create; destrUCtor Destroy; override;
|