Registriert seit: 26. Mär 2003
60 Beiträge
Delphi 2005 Personal
|
Re: Rijndael-Entschlüsselung
11. Aug 2009, 18:53
@ Novo: das müsste so gehen
Delphi-Quellcode:
procedure RSDFSaveFiles(AItems: TStrings; const AFileName: String);
const
Password = #$8C#$35#$19#$2D#$96#$4D#$C3#$18#$2C#$6F#$84#$F3#$25#$22#$39#$EB#$4A#$32#$0D#$25#$00#$00#$00#$00;
var
I: Integer;
begin
with TCipher_Rijndael.Create do
try
Mode := cmCFB8;
Init(Password);
for I := 0 to AItems.Count -1 do
AItems[I] := 'CCF: '+EncodeBinary(AItems[I], TFormat_MIME64);
finally
Free;
end;
AItems.Text := TFormat_HEX.Encode(AItems.Text);
AItems.SaveToFile(AFileName);
end;
Mich würde nun interessieren, wie man das mit DCPCrypt2 umsetzt. Ich habe es wie folgt probiert, jdeoch leider ohne Erfolg:
Delphi-Quellcode:
function HexToStr(s: String): String;
var
i: Integer;
begin
Result:=''; i:=1;
while i<Length(s) do begin
Result:=Result+Chr(StrToIntDef('$'+Copy(s,i,2),0));
Inc(i,2);
end;
end;
function PadWithZeros(const str : string; size : integer) : string;
var
origsize, i : integer;
begin
Result := str;
origsize := Length(Result);
if ((origsize mod size) <> 0) or (origsize = 0) then
begin
SetLength(Result,((origsize div size)+1)*size);
for i := origsize+1 to Length(Result) do
Result[i] := #0;
end;
end;
procedure TMainForm.LoadRSDF(Filename: String);
var
I1:Integer;
tmpLst1: TStringList;
tmpStr1, RSDFKey, RSDFIV: String;
Cipher : TDCP_rijndael;
begin
RSDFKey := PadWithZeros('8C35192D964DC3182C6F84F3252239EB4A320D25', 32);
RSDFIV := PadWithZeros('', 16);
tmpLst1 := TStringList.Create;
tmpLst1.LoadFromFile(Filename);
tmpLst1.Text := HexToStr(tmpLst1.Text);
for I1 := 0 to tmpLst1.Count - 1 do
begin
tmpStr1 := Base64DecodeStr(tmpLst1.Strings[I1]);
Cipher := TDCP_rijndael.Create(Self);
Cipher.Init(RSDFKey[1],128,@RSDFIV[1]);
Cipher.DecryptCFB8bit(tmpStr1[1],tmpStr1[1],Length(tmpStr1));
Cipher.Free;
tmpLst1.Strings[I1] := tmpStr1;
end;
Memo1.Text := tmpLst1.Text;
tmpLst1.Free;
end;
|
|
Zitat
|