十万火急!请教加密的问题!!(50分)

C

c_cc

Unregistered / Unconfirmed
GUEST, unregistred user!
请问,-DES加密用 FileEncryStr函数可实现,用FileDecryStr解密可以,但是用三层DES加密后不可解密,函数如下。请帮忙解答。
procedure Encrypt3DES(EncodeFileName,DeCodeFileName,key1,key2:string);
var Encrypt:TWCDESComp;
tmpFileName1,tmpFileName2:string;
begin
tmpFileName1 := ExtractFilePath(ParamStr(0))+'temp1.txt';
tmpFileName2 := ExtractFilePath(ParamStr(0))+'temp2.txt';
if FileExists(tmpFileName1) then
//清除临时文件
deletefile(pchar(tmpFileName1));
if FileExists(tmpFileName2) then
//清除临时文件
deletefile(pchar(tmpFileName2));
Encrypt:=TWCDESComp.Create(nil);
try
{是用第一个密钥加密,用第二个密钥对加密的内容解密,在拿第一次的密钥对解密的内容再加密。}
Encrypt.FileEncryStr(EncodeFileName,tmpFileName1,key1);
Encrypt.FileDecryStr(tmpFileName1,tmpFileName2,key2);
Encrypt.FileEncryStr(tmpFileName2,DeCodeFileName,key1);
finally
Encrypt.Free ;
end;
end;

{功能:3重DES解密,
参数:SourceFileName源文件,DecodeFileName解密后的文件,key1,key2二个密钥
返回值:明文}
procedure Decrypt3DES(SourceFileName,DecodeFileName,key1,key2:string);
var Encrypt:TWCDESComp;
s:string;
tmpFileName1,tmpFileName2:string;
begin
tmpFileName1 := ExtractFilePath(ParamStr(0))+'temp1.txt';
tmpFileName2 := ExtractFilePath(ParamStr(0))+'temp2.txt';
if FileExists(tmpFileName1) then
//清除临时文件
deletefile(pchar(tmpFileName1));
if FileExists(tmpFileName2) then
//清除临时文件
deletefile(pchar(tmpFileName2));
Encrypt:=TWCDESComp.Create(nil);
try
Encrypt.FileDecryStr(SourceFileName,tmpFileName1,key1);
Encrypt.FileEncryStr(tmpFileName1,tmpFileName2,key2);
Encrypt.FileDecryStr(tmpFileName2,DecodeFileName,key1);
finally
Encrypt.Free ;
end;
end;
 
顶部