Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Passwortabfrage bei Verschlüsselung (https://www.delphipraxis.net/105534-passwortabfrage-bei-verschluesselung.html)

Kutter111 23. Dez 2007 21:06


Passwortabfrage bei Verschlüsselung
 
Hallo,

ich benutze dcpcrypt2 zum ver- und entschlüsseln meiner txt-Datei. Das funktioniert auch. Das Problem liegt eher daran, daß ich nicht verstehe wie ich die Passwortabfrage mache. Das heißt, wenn ich die Datei mit einem Passwort verschlüssle und dann wieder entschlüssle, ABER mit einem anderen Passwort, entsteht sozusagen Datenmüll. Wie kann ich das vermeiden und z.B. ein ShowMessage mit der Meldung, daß das Passwort nicht richtig ist, erscheint?
Ich hoffe, daß ich mich nicht zu blöd anstelle, aber ich habe schon viele Seiten in der DP durchgelesen (Danke an Hagen für die ausführlichen Erklärungen der Verschlüsselung), doch nichts hat mir wirklich geholfen.
Vielleicht hat jemand eine Idee.

Vielen Dank im Voraus.

Dax 23. Dez 2007 21:12

Re: Passwortabfrage bei Verschlüsselung
 
Indem du deinen anstatt der reinen Datei den Stream (Passwort + Datei) verschlüsselst. Wenn du jetzt wieder entschlüsselst und sich eingegebenes und entschlüsseltes Passwort decken, ist das Passwort richtig.

DP-Maintenance 23. Dez 2007 21:16

DP-Maintenance
 
Dieses Thema wurde von "sakura" von "VCL / WinForms / Controls" nach "Programmieren allgemein" verschoben.

Kutter111 23. Dez 2007 21:40

Re: Passwortabfrage bei Verschlüsselung
 
Hallo,
Danke für die schnelle Antwort.
Das Verschlüsseln mache ich über den Stream, aber das Problem ist auch nicht das entschlüsseln, sondern daß die Datei unlesbar bzw. nicht mehr entschlüsselbar wird, wenn ein falsches Passwort eingegeben wird. Deswegen sollte, bevor versucht wird zu entschlüsseln, das Passwort verglichen werden und bei Falscheingabe eine Meldung kommen.
Ich habe das Problem auch bei der Demo der dcpcrypt2 festgestellt.

Dax 23. Dez 2007 21:49

Re: Passwortabfrage bei Verschlüsselung
 
Du hast offenbar meine Antwort nicht verstanden... Mach das Passwort zum Teil der Datei!

Kutter111 23. Dez 2007 22:04

Re: Passwortabfrage bei Verschlüsselung
 
Okay...

aber wenn das Passwort in der verschlüsselten Datei ist kann ich es doch nicht mit einem in einem TEdit eingegebenen Text vergleichen, oder doch?
Vielleicht ist ein bisschen Code gut( wie gesagt, aus der Doc von dspcrypt2 etwas abgewandelt):
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var Cipher: TDCP_rc4;
    KeyStr: string;
    TextInhalt:TStringList;
  begin
    TextInhalt:=TStringlist.Create;
    TextInhalt.LoadFromFile('C:\PW.TXT');
    KeyStr:= '';
    if InputQuery('Passphrase','Enter passphrase',KeyStr) then
    begin
      Cipher:= TDCP_rc4.Create(Self);
      Cipher.InitStr(KeyStr,TDCP_sha1);
      TextInhalt.Text:= Cipher.DecryptString(TextInhalt.Text);
      Cipher.Burn;
      Cipher.Free;
      TextInhalt.SaveToFile('C:\PW.TXT');
    end;
    TextInhalt.Free;
  end;

Dax 23. Dez 2007 22:07

Re: Passwortabfrage bei Verschlüsselung
 
Du hast meine Antworten nicht verstanden.. :(

Pseudocode mit Strings als Daten:
Delphi-Quellcode:
string Passwort, Daten

Temp := Passwort + Daten;
Temp := Verschlüsseln(Temp);

---

Temp := Entschlüsseln(Temp);
if Copy(Temp, 1, Length(Passwort)) <> Passwort then
  ShowMessage('Passwort falsch!')
else
  Daten := Copy(Temp, Length(Passwort) + 1, Length(Temp));

Kutter111 23. Dez 2007 22:12

Re: Passwortabfrage bei Verschlüsselung
 
Ich werde das versuchen...
aber wohl erst nach Weihnachten.
Ich gebe aber nicht auf und melde mich dann wieder.

Frohe Weihnachten an alle...

Kutter111 29. Dez 2007 15:23

Re: Passwortabfrage bei Verschlüsselung
 
Hallo,

leider konnte ich mich erst jetzt wieder meinem Programm widmen.

@Dax: Das Problem ist damit leider nicht aus der Welt, denn das Entschlüsseln des Strings (bei Dir <Temp>) passiert ja dann schon vor dem Prüfen des Passwortes. D.h. der String wäre damit schon nicht mehr entschlüsselbar, und auch nicht mit dem Passwort vergleichbar.
Ich habe es jetzt über einen anderen Weg (die Idee kam mir aber durch Dax Vorschlag, ich weiß seeeehr seltsam...) gelöst. Und zwar verschlüssle ich das Passwort in einer 2. Datei. Vor dem Entschlüsseln der Daten verschlüssle ich das eingegebene Passwort mit dem gleichen Algorythms. Damit kann ich dann den Inhalt der 2. Datei mit dem Passwort vergleichen. Was mir allerdings daran nicht passt, ist: Wenn diese Datei versehentlich gelöscht würde hätte ich keinen Zugriff mehr auf meine Daten. Klar, das Problem hätte ich auch wenn ich die Daten lösche, aber die Chance ist eben höher , da ja dann zwei Dateien zum löschen da sind. Es muß doch noch eine andere Möglichkeit geben das Passwort vor der Entschlüsslung zu überprüfen. Hat noch jemand (Dax natürlich nicht ausgeschlossen;) eine weitere Idee?

Reinhard Kern 29. Dez 2007 17:58

Re: Passwortabfrage bei Verschlüsselung
 
Zitat:

Zitat von Kutter111
Hallo,

leider konnte ich mich erst jetzt wieder meinem Programm widmen.

@Dax: Das Problem ist damit leider nicht aus der Welt, denn das Entschlüsseln des Strings (bei Dir <Temp>) passiert ja dann schon vor dem Prüfen des Passwortes. D.h. der String wäre damit schon nicht mehr entschlüsselbar, und auch nicht mit dem Passwort vergleichbar.
...

Eben, dann weisst du, dass das Passwort falsch ist. Es ist nur richtig, wenn das entschlüsselte Passwort mit dem eingegebenen übereinstimmt.

Jede weitere Idee ist sinnlos - solange du die Vorschläge nicht verstehtst, besteht keine Hoffnung, dass du dein Problem lösen kannst. Du musst erst mal deine Denkblockade überwinden.

Gruss Reinhard


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:26 Uhr.
Seite 1 von 2  1 2      

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