网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
Delphi文件/流的加密解密方法
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式
ream.Create;
MemStream.LoadFromFile(Source);
// 在此写解密流代码
// DecryptStream(MemStream);

OutStream := TFileStream.Create(Target, fmCreate or fmShareDenyWrite);
DecomStream := TDeCompressionStream.Create(MemStream);

{  InStream := TFileStream.Create(Source, fmOpenRead or fmShareDenyNone);
OutStream := TFileStream.Create(Target, fmCreate or fmShareDenyWrite);
DecomStream := TDeCompressionStream.Create(InStream); }

// 解压流
repeat
i := DecomStream.Read(Buf, BufSize);
OutStream.WriteBuffer(Buf, i);
until (i = 0);

// 注意先后
OutStream.Free;
OutStream := nil;

DecomStream.Free;
DecomStream := nil;

MemStream.Free;
MemStream := Nil;
except
on E: Exception do begin
if (MemStream <> nil) then
MemStream.Free;
if (OutStream <> nil) then
OutStream.Free;
if (DecomStream <> nil) then
DecomStream.Free;
MessageDlg(DECOMPRESS_ERROR + #10 + E.Message, mtError, [mbOk], 0);
end;
end;
end;

// 压缩文件到流
procedure CompressToStream(FileName: String; Stream: TStream);
var
i: Integer;
Buf: array[0..BufSize] of byte;
ComStream: TCompressionStream;
InStream: TFileStream; 
begin
if not FileExists(FileName) then
Exit;
InStream := Nil;
ComStream := nil;
try
// 生成流
InStream := TFileStream.Create(FileName, fmOpenRead OR fmShareDenyNone);
ComStream := TCompressionStream.Create(clMax, Stream);

// 压缩流
for i := 1 to (InStream.Size div BufSize) do begin
InStream.ReadBuffer(Buf, BufSize);
ComStream.Write(Buf, BufSize);
end;

i := InStream.Size mod BufSize;
if (i > 0) then begin
InStream.ReadBuffer(Buf, i);
ComStream.Write(Buf, i);
End;

InStream.Free;
InStream := nil;

ComStream.Free;
ComStream := nil;

// 在此写加密流代码(要先释放 ComStream), Postion = 0
// EncryptStream(Stream);
except
on E: Exception do begin
if (InStream <> nil) then
InStream.Free;
if (ComStream <> nil) then
ComStream.Free;
MessageDlg(COMPRESS_ERROR + #10 + E.Message, mtError, [mbOk], 0);
end;
end;
end;

// 解压文件到流
procedure DecompressToStream(FileName: String; Stream: TStream);
var
i: Integer;
Buf: array[0..BufSize] of Byte;
DecomStream: TDecompressionStream;
MemStream: TMemoryStream;
begin
if not FileExists(FileName) then
Exit;
MemStream := Nil;
DecomStream := nil;
try
// 生成流
// 先读文件到 MemStream 中解密(FileName 只读).
// DecomStream 的开始位置 = MemStream.Position
MemStream := TMemoryStream.Create;
MemStream.LoadFromFile(FileName);

// 在此写解密流代码
// DecryptStream(MemStream);

DecomStream := TDeCompressionStream.Create(MemStream);

// 解压流, Postion = 0
repeat
i := DecomStream.Read(Buf, BufSize);
Stream.WriteBuffer(Buf, i);
until (i = 0);
Stream.Position := 0;

DecomStream.Free;
DecomStream := nil;

MemStream.Free;
MemStream := Nil;
except
on E: Exception do begin
if (MemStream <> nil) then
MemStream.Free;

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号