![]() |
CryptMaster - AES-Verschlüsselungsprogramm
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. ![]() Und noch ein Link zu meiner Website: ![]() PS: Ich wäre dankbar, wenn ihr mir eure Meinung zu dem Prog sagen würdet. :) |
Re: CryptMaster - AES-Verschlüsselungsprogramm
lycos blockt den deep link!
|
Re: CryptMaster - AES-Verschlüsselungsprogramm
Kann eigentlich nicht sein.
Ich hab das selbst grad nochmal getestet - und es geht problemlos. Einfach draufklicken und warten, bis das "Speichern"-Fenster kommt. Schon hast du den CryptMaster. ;-) Nur nicht durch die Werbung beirren lassen. Die ist zwar verdammt nervig, aber ich nutze Lycos dennoch als Downloadserver, weil ich da 100MB kostenlosen Webspace kriege. :-) MfG, Daniel. |
Re: CryptMaster - AES-Verschlüsselungsprogramm
Geht das ganze auch ohne Setup für uns zum Testen?
|
Re: CryptMaster - AES-Verschlüsselungsprogramm
Wieso das denn? Das Ding ist doch fertig, hat also auch einen Setup. ;-)
Was spricht denn dagegen? Dem System wird es wohl auch nicht sonderlich schaden, wenn man da mal'n bisschen was installiert. Erstellt ja keine sonderlichen Registry-Einträge etc. Der Setup enthält zumindest die Dokumentation. Und die gehört ja nun mal zum Prog. :-) MfG, Daniel. |
Re: CryptMaster - AES-Verschlüsselungsprogramm
Schaden nicht, aber ich hasse es, wen ich nur mal zum Testen was installieren muß.
Zitat:
Und was spricht gegen ein Zip Archiv? Dürfte übrigens auch kleiner sein, als dein Setup da. |
Re: CryptMaster - AES-Verschlüsselungsprogramm
Muß da unserem gutem Luckie zustimmen. Mein XP läuft jetzt schon 1 1/2 Jahre schön stabil, weil ich eben auch drauf achte, was ich installier.
@Daniel: Wie sind alle Delphiprogrammierer und kommen auch mit einer schlichten zip-Datei klar. Also was spricht dagegen. Gruß, Tom |
Re: CryptMaster - AES-Verschlüsselungsprogramm
Liste der Anhänge anzeigen (Anzahl: 1)
Gut, gut.
Ihr habt mich überzeugt. Speziell für euch jetzt hier das ganze Prog im ZIP-Archiv. So wollte ich es eigentlich schon wegen der Lizenz nicht verbreiten (und weil irgendwelche PC-Newbies damit auch nich klar kämen). Aber hier in der DP sollte es mit Lizenzen ja keine Probleme geben. ;-) MfG, Daniel. |
Re: CryptMaster - AES-Verschlüsselungsprogramm
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Daniel,
sieht gut aus - schön wäre es, wenn Du die Bedienung noch etwas 'straffen' könntest. Mir ist dies mit diesen Assistenten immer etwas 'langwierig'; wenngleich gerade diese Art der Benutzerführung dem ungeübten Anwender eher entgegenkommen dürfte. Und noch eine Kleinigkeit: Zum Schluß bietet mir Dein programm direkt an, noch eine weitere datei zu verschlüsseln - ich solle nur auf 'Restart' klicken. Aber wo ist dieser Button? |
Re: CryptMaster - AES-Verschlüsselungsprogramm
Zitat:
Gruß, Tom |
Re: CryptMaster - AES-Verschlüsselungsprogramm
Liste der Anhänge anzeigen (Anzahl: 1)
Komisch,
das Problem mit dem Restart-Button hab ich noch nie erlebt - und ich hab bestimmt schon 100 Dateien testweise verschlüsselt. :? Wenn das bei euch nochmal vorkommt, dann klickt doch bitte einfach mal auf den zurück-Button und sagt mir, was dann passiert. ich hab das so programmiert, dass es ein button bleibt, bei dem sich nur die Caption ändert. In der ButtonClick-Routine wird dann die Caption abgefragt. Handelt der Button also wie ein Restart-Button, dann wird bei euch nur aus irgendeinem Grund das GUI nicht upgedated. Aber hier noch etwas Anderes: Nämlich eine Version 1.1 Die schätzt jetzt gleich die Passwortsicherheit ein. Eben speziell für den ungeübten User, für den auch die Sache mit dem Assistenten gemacht ist. :) MfG, Daniel. |
Re: CryptMaster - AES-Verschlüsselungsprogramm
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
hier noch einmal die Version 1.2 im WinXP-Design. MfG, Daniel. |
Re: CryptMaster - AES-Verschlüsselungsprogramm
Vom Design her viel weiße Fläche um viel leeren Raum.
Das Menü des Buttons öffnet sich irgendwie etwas "seltsam". Noprmalerweise haben solehe Buttons ein Dreieck das nach untenweist und beim Klicvken erscheint das Menü darunter. Zitat:
Zitat:
Zitat:
Alles in allem scheint es zu funktionieren. Nur bei größeren Dateien reagiert es nicht mehr und eine Fortschrittsanzeige wäre nicht schlecht. |
Re: CryptMaster - AES-Verschlüsselungsprogramm
@ Lickie:
Das Menü soll sich so öffnen. Es ist einfach ein normales Kontextmenü. Ein anderes Menü würde das Design der gleichmäßigen Buttons durcheinander bringen. Programm exportieren: Du kannst das, aber kannst du dir vorstellen, dass ich auch Leute kenne, die zwar 'nen USB-Stick haben, aber zu blöd sind um den Speicherort meines Progs zu finden? Und auf diese Weise geht es doch wohl auch noch schneller. Du musst ja mal bedenken, dass der OTTO-Normalverbraucher nicht mit der ZIP-Datei arbeitet - und somit alle Dateien vorliegen hat - sondern den Setup verwendet, der alle Dateien in C:\Programme\CryptMaster stopft. Die Frage hat den Sinn, damit ein User - wenn er das Prog minimieren will und aus Versehen auf schließen klickt oder statt auf weiter auf beenden - das Prog nicht beendet wird. Und im Normalfall startest du das Prog ja, weil du etwas bestimmtes machen willst. Und nach dem Durchführen einer Aktion ist die Frage ja auch deaktiviert. Bei sinnvoller Verwendung wirst du mit der Frage also überhaupt nicht konfrontiert. Zur Hilfe: OK, das klingt schon etwas doof. Aber im Web gibt es verdammt viele Programme, in die eine Backdoor oder so eingebaut ist bzw. die nicht so sicher sind, wie sie scheinen. Und ich möchte halt meinen Usern ermöglichen, die Sicherheit selbst unter die Lupe zu nehmen. Also eine gewisse Transparenz. Und da die Sicherheit natürlich nur von Usern beurteilt werden kann, die sich selbst zumindest etwas auskennen, gibt es diesen Satz. Allen anderen Usern soll dann wohl die genaue Beschreibung der Verschlüsselung reichen. Ansonsten muss man auch davon ausgehen, dass User nur den Quellcode haben wollen, damit sie ihn anschließend selbst verwenden können. Wer aber ein Cipherprog hat, der hat sowas nicht nötig. ;-) Und noch etwas: Denk(t) bei der Beurteilung immer daran, dass die eigentliche Zielgruppe nicht die Mitglieder der DP sind, sondern der ganz normale PC-Nutzer. MfG, Daniel. Ergänzung: Das Hängenbleiben liegt daran, dass ich versucht habe, mit so wenigen Festplattenzugriffen wie möglich auszukommen. Dafür wird erst die Originaldatei in einen Memory-Stream geladen (hier ist dann das Problem mit großen Files), der Header wird angehängt etc und dann wird das Ding verschlüsselt, wobei die Ausgabe direkt der Destination-FileStream ist. Würde ich statt eines Memory-Streams 'nen Filestream wählen, dann hätte ich wieder das Problem, dass ich unverschlüsseltes Material unnötig oft speichern würde und zusätzlich noch zu viele HDD-Zugriffe hätte, was wiederum für Flash-Speicher schädlich wäre. Jetzt arbeite ich prinzipiell so, dass ich eigentlich nur einen Kopiervorgang durchführe, bei dem ich zwischendurch verschlüssel - quasi OnTheFly. Und ich kann den Stream schlecht zerlegen, da ich nun einem mit CBC nur die höchste Sicherheit erreiche, wenn ich durchgehend arbeite. Sonst muss ich zwischendurch immer wieder Zufallswerte einbauen, weil sonst wieder die Gefahr eines Known-Plaintext-Angriffes besteht. Und erst ins DEC einzugreifen, um dann da Änderungen vorzunehmen, die es ermöglichen, dass ich Teilstücke mit CBC so verschlüsseln kann wie ich es will: Nein danke, das ist dann doch etwas zu viel des Guten. :-) |
Re: CryptMaster - AES-Verschlüsselungsprogramm
Lager das Ver- und Entschlüsseln in einen Thread aus, dann hängt auch nichts mehr.
|
Re: CryptMaster - AES-Verschlüsselungsprogramm
??? Wieso das denn? Du meinst eine INI-Datei oder eine DLL?
Gut, wie mache ist das denn? Ich schiebe die Funktionen in eine INI und implementiere die oder wie geht das? Aber ich verstehe den Sinn davon noch nicht. Wieso soll das besser sein? MfG, Daniel. PS: Wenn ich das auslagere, dann ist es wahrscheinlich auch nicht mehr möglich, dass ich während der Zeit der Verschlüsselung noch die Eieruhr anzeige, oder? |
Re: CryptMaster - AES-Verschlüsselungsprogramm
Hä? Ausführbarer Copde in einer Ini? Was soll denn das? :gruebel: Und eine DLL brauchst du für einen extra Thread auch nicht. Datei -> neu -> weitere -> Thread-Objekt.
Und der Sinn ist der, dass dann dein Fenster nicht einfriert und verschoben und mimiert werden kann. Kuck dir meinen Crypter an. Und wenn du TStreamProgressAdapter nutzt kannst du auch einen Fortschritanzeigen. Und wo wir schon dabei sind, beantworte mir doch mal die Frage in unserem Thread mit Hagen. Wie lautet die Cipher Klasse von AES? |
Re: CryptMaster - AES-Verschlüsselungsprogramm
Zitat:
Mit dem TStreamProgressAdapter sehe ich ein kleines Problem, weil ich mir drei Streams erstelle, und zwar einen SourceStream, einen TempStream und einen DestStream. Ich könnte somit nur den Fortschritt des DestStreams lesen. Und der wird ja beim Verschlüsseln erst geschrieben! Vielleicht geht es, wenn ich vor dem Verschlüsseln schon einmal die Größe von DestStream festlege. Ansonsten würde ich ja immer 100% bekommen. Zitat:
Unit: Cipher1; Class: TCipher_Rijndael; MfG, Daniel. |
Re: CryptMaster - AES-Verschlüsselungsprogramm
Zitat:
Nicht ganz. Du könntest dem Haupt-Thread (der nix zu tun hat, aber halt reagiert) per TThread.OnThreadDone sagen, dass er beim Beenden der Threads (bzw. der Ver/Entschlüsselungsvorgangs) die Meldung anzeigen soll! mfG mirage228 |
Re: CryptMaster - AES-Verschlüsselungsprogramm
Zitat:
Zitat:
|
Re: CryptMaster - AES-Verschlüsselungsprogramm
Zitat:
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. |
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. |
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. |
Re: CryptMaster - AES-Verschlüsselungsprogramm
Das Laden/Speichern der Datei dauert eben etwas, er muß sie ja von der Platte lesen/schreiben.
|
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. |
Re: CryptMaster - AES-Verschlüsselungsprogramm
Das Archiv scheint beschädigt zu sein.
|
Re: CryptMaster - AES-Verschlüsselungsprogramm
Bei mir geht's wenn ich's downloade.
Vielleicht war's nur'n Übertragungsfehler. MfG, Daniel. |
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:
Und daran, dass ich den Header nicht mit verschlüssele kann es nicht liegen.
// 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; 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. |
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 |
Re: CryptMaster - AES-Verschlüsselungsprogramm
Zitat:
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:
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. |
Re: CryptMaster - AES-Verschlüsselungsprogramm
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
hab jetzt mal mit Application.PrecessMessages gearbeitet. Jetzt stürzt das wenigstens nicht mehr ab. Aber wie kriege ich diesen Abbrechen-Button hin? Nur meine Verschlüsselungsfunktion zu stoppen, das geht eh nicht. Aber dann will ich wenigstens die Anwendung schließen. Mit Application.Terminate geht es nicht. Das wird erst ausgeführt, wenn alles fertig ist. Application.Free schließt zwar die Anwendung, aber nicht den Prozess. Ist also auch schlecht. Was kann ich also machen? Es muss do möglich sein, dass ich den Prozess meiner Anwendung kille, oder? MfG, Daniel. |
Re: CryptMaster - AES-Verschlüsselungsprogramm
Moin Daniel,
setz' in der OnClick des Abbrechen Buttons ein Flag, und frag das in der Schleife die Du abbrechen willst ab. Flag gesetzt: Schleife beenden. |
Re: CryptMaster - AES-Verschlüsselungsprogramm
Soweit hab ich auch schon gedacht.
Leider hab ich auf die Schleife aber keinen Zugriff, weil die im DEC versteckt ist! Ich gebe dem DEC also nur einen Befehl und das wird dann abgearbeitet. Den Forschritt erfahre ich nur über den StreamProgressAdapter. Mir bleibt also nichts Anderes übrig, als entweder die Prozedur zu killen oder das gesamte Programm. MfG, Daniel. |
Re: CryptMaster - AES-Verschlüsselungsprogramm
daher solltest du es auch in einen Thread auslagern. Den kannst du nämlich einfach per TerminateThread(Handle); beenden.
mfG mirage228 |
Re: CryptMaster - AES-Verschlüsselungsprogramm
Dann verzichte ich lieber auf das Beenden.
Hmm...Ich glaube, ich hab irgendwo noch einen Code, mit dem ich direkt einen Prozess killen kann. Dann kann ich doch einfach das Handle meines Programms an diese Funktion übergeben und schon in der Prozess gekillt. Stellt sich nur die Frage, ob das dann auch unter WinME geht. Na, ja. Irgendjemand von euch wird ja WinME haben. Der soll das dann doch bitte mal nachher testen. ;-) MfG, Daniel. |
Re: CryptMaster - AES-Verschlüsselungsprogramm
Mal 'ne Frage:
Wie kriege ich die ProcessID meines Programms? MfG, Daniel. |
Re: CryptMaster - AES-Verschlüsselungsprogramm
GetCurrentProcesID.
Aber jetzt fängst du an rumzuflicken und unsauber zu arbeiten. Nimm EncodeBuffer wie ich in einer Schleife, diese kannst du dann über ein Flag verlassen. Eventuell ist das auch schneller als EncodeStream. |
Re: CryptMaster - AES-Verschlüsselungsprogramm
Gut, aber dann verschlüssel ich jeden Buffer einzeln und das ist nicht gut. Dann bringt mir CBC nämlich praktisch nichts mehr (soweit ich weiß).
MfG, Daniel. PS: Mir ist lieber das Prog ist etwas geflickt als wenn die Verschlüsselung geflickt ist! |
Re: CryptMaster - AES-Verschlüsselungsprogramm
Hagen hat gesagt, dass EncodeStream intern EncodeBuffer aufruft. Mußt mal in unserem Thread kucken, da steht es irgendwo.
|
Re: CryptMaster - AES-Verschlüsselungsprogramm
Liste der Anhänge anzeigen (Anzahl: 1)
Oki, wenn der das intern nutzt, dann könnte ich das auch nehmen.
Aber dann könnte ich auch den StreamProgressAdapter wieder rausschmeißen - zumindest für einige Funktionen. Das heißt: Nee, ich könnte ihn nicht nehmen. Die meiste Zeit dauert es nämlich, wenn ich die Funktion CopyFrom() aufrufe. Abgesehen davon bin ich mit meiner jetzigen Lösung schon ganz zufrieden. Immerhin funktioniert es ohne Probleme. So, hier ist erst einmal die aktuelle Version meines Programmes! MfG, Daniel. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:51 Uhr. |
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