Delphi-PRAXiS
Seite 3 von 6     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   CryptMaster - AES-Verschlüsselungsprogramm (https://www.delphipraxis.net/10068-cryptmaster-aes-verschluesselungsprogramm.html)

daniel-volk 11. Okt 2003 18:33

Re: CryptMaster - AES-Verschlüsselungsprogramm
 
Zitat:

Mache ich doch auch. Allerdings wozu der TempStream? Den SourceStream koppelst du mit dem StreamProgressAdapter. Danach richtet sich ja immer der Fortschritt.
Eben nicht. Auf Hagen's Rat hin verschlüssel ich den Hash-Wert mit und nutze ihn somit gleichzeitig noch als Zufallswert. Ich brauche also zwingend einen TempStream, da ich ansonsten den Hash-Wert nicht vor dem Verschlüsseln einbauen kann. Und somit wird der SrcStream blitzschnell gelesen - im Gegensatz zum DestStream.

Aber ich glaube dennoch, dass mit ein Thread nicht viel bringt. Wenn ich WaitForSingleObject nehme, dann wird mein Prog sicherlich wieder hängen.
Zudem würde es für mich eventuell verdammt kompliziert werden, da sehr viel Quellcode umgestrickt werden müsste.

Wenn ich mit dem StreamProgressAdapter einfach so arbeite, wieso wird mir da kein Fortschritt angezeigt, auch wenn ich in die WndProc Prozedur Form1.Update; eingebe?
Wird die WndProc-Prozedur überhaupt nicht ausgeführt, solange eine andere Prozedur aktiv ist?
Meine Wunschlösung wäre einfach, dass ich dem Ding nur sage, dass es auf einen eingeblendeten Abbrechen-Button die Encode-Prozedur killt und ansonsten den Fortschritt anzeigt. Ich will nämlich eigentlich nicht so viel ändern.
Ist das irgendwie möglich?

MfG,
Daniel.

Luckie 11. Okt 2003 18:42

Re: CryptMaster - AES-Verschlüsselungsprogramm
 
Also ich habe den StreamProgressAdapter so umgestrickt, dass er immer eine Message schickt. Diese mußt du in deiner überschriebenen WndProc abfangen und auswerten. Kucks dir bei mir an.

Hm, das mit dem Tempstream. Da würde mir jetzt auch nichts besseres einfallen. Daran überlege ich ja auch noch, wie ich das hinbekomme den Hash mit zu verschlüsseln. Im Moment packe ich den Header mit dem Hash noch vor die unverschlüsselte Datei. Aber wie Hagen sagt, wäre es besser selbigen mit zu verschlüsseln. Eventuell trenne ich den Hash vom Header. dann kann ich den Header der verschlüsselten Datei auslesen wo drin Steht welcher Cipher und welcher Hash benutzt wurde. Dann kann ich alles im Programm ändern und ältere verschlüsselte Dateien können immer noch entschlüsselt werden. Ist etwas tricke dann mit dem Streams muß man konzentriert arbeiten und aufpassen, was man macht.

daniel-volk 11. Okt 2003 20:57

Re: CryptMaster - AES-Verschlüsselungsprogramm
 
So, ich hab mal 'ne ProgressBar eingebaut. Und das, was ich herausgefunden habe, das ist unglaublich!
Die Berechnung des Hash-Wertes, die geht recht schnell. Wenn dann aber der Source-Stream in den Tempt-Stream geschrieben wird, dann dauert das ewig.
Das eigentliche Verschlüsseln am Ende dauert bei 17 MB nur ca. 2 Sec!!!
(Hab mir zwischen den Aktionen immer wieder Messages anzeigen lassen.)

Wie kommt das?

Daniel.

Luckie 11. Okt 2003 21:09

Re: CryptMaster - AES-Verschlüsselungsprogramm
 
Das Laden/Speichern der Datei dauert eben etwas, er muß sie ja von der Platte lesen/schreiben.

daniel-volk 11. Okt 2003 22:59

Re: CryptMaster - AES-Verschlüsselungsprogramm
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

ich hab jetzt mal die Version 1.3 fertig.
Dabei wird jetzt in einer ProgressBar genau gezeigt, an welcher Stelle er gerade ist.

Dennoch sollte man keine Dateien verschlüsseln, die größer als 20 MB sind. Das dauert einfach zu lange. Ob es geht weiß ich nicht, weil ich es nicht getestet habe.
Bis 20 MB ist es aber auf jeden Fall OK.

Aber wie macht die Profi-Software das? Die verschlüsseln doch Dateien in 0,nix. Na ja, wahrscheinlich ist das dann alles optimiert und in Assembler geschrieben, sodass die Befehle wesentlich schneller abgearbeitet werden. :?

Wird für uns jedenfalls wohl nicht zu schaffen sein.

MfG,
Daniel.

PS: Wenn ich 'nen MemoryStream verwende, wird der dann in die Auslagerungsdatei geschrieben? Das wäre nämlich verdammt dumm. Dann müsste ich den Stream eventuell wipen, damit das nicht auf der HDD zurückbleibt.

Luckie 11. Okt 2003 23:03

Re: CryptMaster - AES-Verschlüsselungsprogramm
 
Das Archiv scheint beschädigt zu sein.

daniel-volk 12. Okt 2003 00:01

Re: CryptMaster - AES-Verschlüsselungsprogramm
 
Bei mir geht's wenn ich's downloade.

Vielleicht war's nur'n Übertragungsfehler.

MfG,
Daniel.

Luckie 12. Okt 2003 00:19

Re: CryptMaster - AES-Verschlüsselungsprogramm
 
Ich weiß ehrlich gesagt nicht, was du da machst. Dein Programm 48 MB 1 Minute 35 Sekunden. Mein Programm für die gleiche Datei 8 Sekunden. Und meine Konsolen Version sogar nur 5 Sekunden - Minus Reaktionszeit zum Stoppen.
Delphi-Quellcode:
// open source stream
  SrcStream := TStreamProgressAdapter.Create(TFileStream.Create(Filename,
    fmOpenRead or fmShareDenyNone), hWnd);
  if Assigned(SrcStream) then
  begin
    try
      // create destination stream
      DestStream := TFileStream.Create(IncludeTrailingPathDelimiter(Folder)+
        ExtractFilename(Filename) + EXTENSION, fmCreate);
      if Assigned(DestStream) then
      begin
        try
          // write the head into the stream
          DestStream.Write(FileHeader, sizeof(TFileHeader));
          //  prepare vor encoding
          with DefCipherClass.Create(PW, nil) do
          begin
            Mode := cmCBC;
            InitKey(PW, nil);
            // alocate memory for the buffer
            GetMem(Buffer, 1024);
            try
              // as long as we have not reached the end of the source stream
              while (SrcStream.Position < SrcStream.Size) and (Terminated =
                False) do
              begin
                // how much to read
                if SrcStream.Size - SrcStream.Position > BlockSize then
                  Len := BlockSize
                else
                  Len := SrcStream.Size - SrcStream.Position;
                // read into the buffer
                SrcStream.ReadBuffer(Buffer^, Len);
                // encode the buffer
                EncodeBuffer(Buffer^, Buffer^, len);
                // write the buffer
                DestStream.WriteBuffer(Buffer^, Len);
              end;
Und daran, dass ich den Header nicht mit verschlüssele kann es nicht liegen.

AMD Athlon 1800XP (1500 MHz), 512 MB Ram.

Und lass das Menü von dem Button doch unter dem Button aufpoppen, das sieht doch besser aus. Und warum Refreshst du auch immer das Label mit der Aktion immer mit. Das flackert doch. Und wenn du in der WndProc noch Application.Processmessages aufrufst, dann kann man es auch verschieben und minimiren und so weiter arbeiten. Diese "Stay on Top" als default ist sowieso nervig, dein Programm blockiert dann jedes mal den gesamten Desktop.

mirage228 12. Okt 2003 08:22

Re: CryptMaster - AES-Verschlüsselungsprogramm
 
Hi,

dein Programm stürzt während des Verschlüsselungsvorgang ab (44 MB Datei, Schritt 2), wenn ich während des Vorgangs in ein anderes Fenster wechsele (z.B. Windows Media Player).
Wenn ich nicht wegschalte, braucht dein Programm ca. 2min um die Datei zu verschlüsseln. Am längsten dauerte Schritt 2.
Zudem sind Progressbar und Label drüber ziemlich am flackern.

Ansonsten gefällt mir dein Programm. Bei dem Assistenten kann man sich gar nicht vertun. Die angaben zur Passwortsicherheit gefallen mir ebenfalls ;-)

mfG
mirage228

daniel-volk 12. Okt 2003 09:30

Re: CryptMaster - AES-Verschlüsselungsprogramm
 
Zitat:

Hi,

dein Programm stürzt während des Verschlüsselungsvorgang ab (44 MB Datei, Schritt 2), wenn ich während des Vorgangs in ein anderes Fenster wechsele (z.B. Windows Media Player).
Wenn ich nicht wegschalte, braucht dein Programm ca. 2min um die Datei zu verschlüsseln. Am längsten dauerte Schritt 2.
Zudem sind Progressbar und Label drüber ziemlich am flackern.
Ja, ich weiß. Ich weiß aber auch nicht, wie ich das ändern soll. Die einzige Möglichkeit wären wahrscheinlich Threads, aber dafür müsste ich jede Menge Quellcode umstricken - und wenn ich Pech hätte, dann wäre es trotzdem nicht besser. :(
Das mit dem Flackern liegt daran, dass das Fenster immer wieder upgedated werden muss, wenn ein Progress stattfindet. Und das geschieht z.T. schneller, als es überhaupt gezeichnet wird. Daher das Flackern. Ist bei sowas aber durchaus normal.

Zitat:

Ansonsten gefällt mir dein Programm. Bei dem Assistenten kann man sich gar nicht vertun. Die angaben zur Passwortsicherheit gefallen mir ebenfalls
Ah, endlich mal ein Befürworter des Assistenten. :bounce2: Die Formulierungen zur Passwortsicherheit stammen übrigens von Steganos. Auf solche Formulierungen haben die ja nun kein Copyright. Wenn es ein solches Copyright gäbe, dann könnten wir wahrscheinlich kein Wort mehr sprechen, ohne gleich gegen irgendein Copyright zu verstoßen.
Ne, aber ich hab die Formulierungen übernommen, weil ich mir dann zumindest sicher sein konnte, dass das auch Hand und Fuß hat.
Abgesehen davon schätzt CryptMaster die Passwortsicherheit etwas pessimistischer ein als Steganos. Um den Status 100% zu erreichen, musst du also bei CryptMaster etwas mehr tippen. ;-)

MfG,
Daniel.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:33 Uhr.
Seite 3 von 6     123 45     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz