读书人

Delphi加密解密代码转C#请.附代码

发布时间: 2012-04-02 19:58:59 作者: rapoo

Delphi加密解密代码转C#请高手指点.附代码.
uses
Classes,SysUtils,VCLUnZip,VCLZip,EncdDecd,Forms,ComCtrls,Dialogs, DBAccess, MSAccess, MemDS;

Function EnCodeMarc(MarcStr:String):String; //Marc编码
var
Mem,Mem1:TMemoryStream;
VCLZip:TVCLZip;
s:String;
Size:Integer;
begin
Result:= ' ';
if Trim(MarcStr)= ' ' then
begin
Exit;
end;
Mem:=TMemoryStream.Create;
Mem1:=TMemoryStream.Create;
VCLZip:=TVCLZip.Create(nil);
try
Mem.WriteBuffer(Pointer(MarcStr)^, Length(MarcStr));
Mem.Position:=0;
VCLZip.Password:=PASS;
VCLZip.ArchiveStream:=Mem1;
VCLZip.ZipFromStream(Mem,PASS);
Mem1.Position:=0;
Size := Mem1.Size;
SetString(S, nil, Size);
Mem1.Read(Pointer(S)^, Size);
Result:=EncodeString(s);
finally
Mem.Free;
Mem1.Free;
VCLZip.Free;
end;
end;

Function DeCodeMarc(MarcStr:String):String; //Marc解码
var
Mem,Mem1:TMemoryStream;
VCLUnZip:TVCLUnZip;
s:String;
Size:Integer;
begin
Result:= ' ';
if Trim(MarcStr)= ' ' then
begin
Exit;
end;
s:=DecodeString(MarcStr);
Mem:=TMemoryStream.Create;
Mem1:=TMemoryStream.Create;
VCLUnZip:=TVCLUnZip.Create(nil);
try
Mem.WriteBuffer(Pointer(s)^, Length(s));
Mem.Position:=0;
VCLUnZip.Password:=PASS;
VCLUnZip.ArchiveStream:=Mem;
VCLUnZip.UnZipToStream(Mem1,PASS);
Mem1.Position:=0;
Size := Mem1.Size;
SetString(S, nil, Size);
Mem1.Read(Pointer(S)^, Size);
Result:=s;
finally
Mem.Free;
Mem1.Free;
VCLUnZip.Free;
end;
end;

end.

[解决办法]
应该是字符串压缩吧,主要的工作还是由VclZip控件完成的。
如果你的转的话,亦得把VclZip转过去,工作量很大。
要压缩干脆直接找C#的
[解决办法]
你找一下有没,要不用Delphi写个Dll专门负责这个工作,给C#调用,这是应该是最快也是最有效的方法.
要不就转换数据库里的东西

读书人网 >.NET

热点推荐