Einzelnen Beitrag anzeigen

Benutzerbild von Sko
Sko

Registriert seit: 11. Sep 2005
327 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: Arbeiten mit dem DEC

  Alt 12. Sep 2005, 15:16
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 = 'Blowfishthen Algorithmus := TCipher_Blowfish;
    if ComboBox1.text = 'Rijndaelthen Algorithmus := TCipher_Rijndael;
    if ComboBox1.text = 'Sapphire IIthen 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.
MfG Sko
Zitat von Phoenix:
[OT]Phoenix guckt in die Glaskugel, zuckt mit den Flügelspitzen, krächzt etwas von wegen 'Boden' und 'Scherben' und schubbst die Kugel in Richtung Tischkante.[/OT]
Rockbox
  Mit Zitat antworten Zitat