also, das ganze sieht jetz so aus:
Delphi-Quellcode:
var
Form1: TForm1;
Filename: string;
crypt: string;
Algorithmus: TCipherClass;
quelle: TFileStream;
ziel: TMemoryStream;
buffer: Pointer;
Blockgroesse: integer;
Laenge: integer;
Start: TTime;
Ende: TTime;
Lauf: TTime;
Verb: real;
Groesse: real;
Versch: real;
.
.
.
begin
Blockgroesse := 81920;
if ComboBox1.text = 'Blowfish' then Algorithmus := TCipher_Blowfish;
if ComboBox1.text = 'Rijndael' then Algorithmus := TCipher_Rijndael;
if ComboBox1.text = 'Sapphire II' then Algorithmus := TCipher_Sapphire;
quelle := TFileStream.Create(Filename, fmOpenRead or fmShareDenyNone);
Start:=Time;
Label7.caption:='00:00:00';
try
ziel := TMemoryStream.Create;
try
with Algorithmus.Create(Edit3.text, nil) do
begin
Mode := cmCBC;
InitKey(Edit3.text, nil);
GetMem(Buffer, 81920);
try
while (quelle.Position < quelle.Size) do
begin
if (quelle.Size - quelle.Position > Blockgroesse) then
begin
Laenge := Blockgroesse
end
else
begin
Laenge := quelle.Size - quelle.Position
end;
quelle.ReadBuffer(Buffer^, Laenge);
EncodeBuffer(Buffer^, Buffer^, Laenge);
ziel.WriteBuffer(Buffer^, Laenge);
ProgressBar1.Min:=0;
ProgressBar1.Max:=quelle.size;
ProgressBar1.Position:=Quelle.Position;
Form1.Refresh;
Lauf:=Time;
Groesse:=(quelle.Size/1024)/1024;
Verb:=((quelle.size-quelle.position)/1024)/1024;
Versch:=((Quelle.position)/1024/1024);
Label8.caption:=RealtoStr(Groesse);
Label7.caption:=TimeToStr(Lauf-Start);
Label6.caption:=RealToStr(Verb);
Label10.caption:=RealToStr(Versch);
end;
finally
FreeMem(Buffer);
end;
ziel.Position := 0;
ziel.SaveToFile(crypt);
end;
finally
ziel.Free;
end;
finally
quelle.Free;
end;
EDIT: Ich hab den Download wieder gelöscht, da ich einen Schwerwiegenden Fehler entdeckt habe:
Ich hab versucht eine 300 MB Datei zu verschlüsseln, aber mit der Zeit ging das Verschlüsseln immer langsamer, bis es nach 18 Minuten bei etwa 60 % garnicht mehr weiter ging.