AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte CryptMaster - AES-Verschlüsselungsprogramm
Thema durchsuchen
Ansicht
Themen-Optionen

CryptMaster - AES-Verschlüsselungsprogramm

Ein Thema von daniel-volk · begonnen am 10. Okt 2003 · letzter Beitrag vom 15. Nov 2003
Antwort Antwort
Seite 3 von 6     123 45     Letzte »    
daniel-volk
Registriert seit: 16. Jul 2003
Hi,

an dieser Stelle stelle ich euch mein Verschlüsselungsprogramm CryptMaster vor.

Mit CryptMaster lassen sich Dateien und Texte verschlüsseln und Dateien vernichten.
Das Programm verfügt über eine recht große Dokumentation und ist durch den Assistentenstil einfach zu bedienen.

Es wird folgende Verschlüsselung genutzt:
AES (Rijndael) im Modus CBC (Cipher Block Changing) mit SHA-1 als HashClass. Daraus ergibt sich eine maximale Schlüssellänge von 160 Bit, was sogar mehr ist, als Steganos Security Suite hat.
Genaue Infos hierzu gibt's aber in der Hilfe.

CryptMaster läuft natürlich auf jedem Windows-System. (Geschrieben unter XP, getestet unter XP und ME.)

MfG,
Daniel.

CryptMaster - Download

Und noch ein Link zu meiner Website:
DanielVolk.de

PS:
Ich wäre dankbar, wenn ihr mir eure Meinung zu dem Prog sagen würdet.
 
daniel-volk

 
Delphi 6 Enterprise
 
#21
  Alt 11. Okt 2003, 18:33
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.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#22
  Alt 11. Okt 2003, 18:42
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.
Michael
  Mit Zitat antworten Zitat
daniel-volk

 
Delphi 6 Enterprise
 
#23
  Alt 11. Okt 2003, 20:57
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.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#24
  Alt 11. Okt 2003, 21:09
Das Laden/Speichern der Datei dauert eben etwas, er muß sie ja von der Platte lesen/schreiben.
Michael
  Mit Zitat antworten Zitat
daniel-volk

 
Delphi 6 Enterprise
 
#25
  Alt 11. Okt 2003, 22:59
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.
Angehängte Dateien
Dateityp: zip cryptmaster_760.zip (409,5 KB, 20x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#26
  Alt 11. Okt 2003, 23:03
Das Archiv scheint beschädigt zu sein.
Michael
  Mit Zitat antworten Zitat
daniel-volk

 
Delphi 6 Enterprise
 
#27
  Alt 12. Okt 2003, 00:01
Bei mir geht's wenn ich's downloade.

Vielleicht war's nur'n Übertragungsfehler.

MfG,
Daniel.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#28
  Alt 12. Okt 2003, 00:19
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.
Michael
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

 
Delphi 2010 Professional
 
#29
  Alt 12. Okt 2003, 08:22
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
David F.
  Mit Zitat antworten Zitat
daniel-volk

 
Delphi 6 Enterprise
 
#30
  Alt 12. Okt 2003, 09:30
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. 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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 6     123 45     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz