Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Password in die INI schreiben (https://www.delphipraxis.net/188015-password-die-ini-schreiben.html)

strom 24. Jan 2016 11:13

Password in die INI schreiben
 
Hallo,

möchte gerne das Passwort (Edit4) in der INI abspeichern.

Es kommt immer die Fehlermeldung: Nicht genügend wirkliche Parameter??

Delphi-Quellcode:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  ini: TIniFile;
  filename: String;
begin
  filename := ExtractFilePath(ParamStr(0)) + 'settings.ini';
  ini := TIniFile.Create(filename);
  try
   ini.WriteString('mySQL Server', 'IP', Edit1.Text);
   ini.WriteString('mySQL Server', 'Port', Edit2.Text);
   ini.WriteString('mySQL Server', 'User', Edit3.Text);
   ini.WriteString('mySQL Server' THash_MD5.CalcString'Password' ,Edit4.Text, nil, fmtMIME64)); // hier das Problem
   ini.WriteString('mySQL Server', 'Database', Edit5.Text);
  finally
    ini.Free;
  end;
end;

Sir Rufo 24. Jan 2016 11:17

AW: Password in die INI schreiben
 
Nur so am Rande:

Wie willst du aus einem Hash das Kennwort wiederherstellen?
Rainbow-Tables, Brute-Force, ...?

Valle 24. Jan 2016 11:24

AW: Password in die INI schreiben
 
Fällt dir in der Zeile mit dem Fehler wirklich nichts auf? :gruebel: So nach dem Wort CalcString?

Wie Sir Rufo das schon angedeutet hat: Wieso speicherst du den Hash des Passworts hab? Du wirst das Passwort doch später wieder auslesen wollen, oder? Hashes sind Einwegfunktionen. Das heißt deren Sinn ist es, ihre Umkehrung möglichst schwer zu machen. Du kannst aus dem gespeicherten MD5 das Passwort nicht mehr zurückrechnen.

strom 24. Jan 2016 11:58

AW: Password in die INI schreiben
 
OK :oops:

Richtig, möchte das Passwort verschlüsselt speichern, und auch wieder lesen!
Sollte was einfaches sein, hat jemand ein Beispiel?

Danke

mkinzler 24. Jan 2016 12:04

AW: Password in die INI schreiben
 
Dann musst Du einen Verschlüsselungscodec wie 3DES oder Rijndael(AES) verwenden.

hoika 24. Jan 2016 12:27

AW: Password in die INI schreiben
 
Hallo,
schreibe den Hash in eine lokale Variable,
dann siehst du auch deinen Fehler.


Heiko

DelphiKlaus 24. Jan 2016 13:00

AW: Password in die INI schreiben
 
Sich den Hash anstelle des Passworts zu merken ist meiner Meinung nach der bessere Weg, da dann auch niemand anders das Passwort wieder herstellen kann. Man kann dann später natürlich nicht das Passwort mit dem Hash vergleichen, sondern muss vom eingegebenen Passwort wieder den Hash bilden und den gemerkten mit dem gebildeten Hash vergleichen.

In der "Problem"-Zeile fehlen zumindest ein Komma und eine Klammer auf.

mkinzler 24. Jan 2016 13:10

AW: Password in die INI schreiben
 
Nur mit einem Hash kann man sich nirgends anmelden

nahpets 24. Jan 2016 13:21

AW: Password in die INI schreiben
 
Zitat:

Zitat von mkinzler (Beitrag 1327998)
Nur mit einem Hash kann man sich nirgends anmelden

Stimmt, aber wenn's die Anmeldung für's eigene Programm ist, reicht ein Vergleich zweier Hashwerte aus.

Aviator 24. Jan 2016 14:05

AW: Password in die INI schreiben
 
Zitat:

Zitat von nahpets (Beitrag 1327999)
Zitat:

Zitat von mkinzler (Beitrag 1327998)
Nur mit einem Hash kann man sich nirgends anmelden

Stimmt, aber wenn's die Anmeldung für's eigene Programm ist, reicht ein Vergleich zweier Hashwerte aus.

Wenn du aber mal im ersten Beitrag schaust will er sich die Daten für einen MySQL-Server speichern. Und an dem kann man sich nicht mit einem Hash anmelden. :wink:

nahpets 24. Jan 2016 14:28

AW: Password in die INI schreiben
 
Zitat:

Zitat von Aviator (Beitrag 1328007)
Zitat:

Zitat von nahpets (Beitrag 1327999)
Zitat:

Zitat von mkinzler (Beitrag 1327998)
Nur mit einem Hash kann man sich nirgends anmelden

Stimmt, aber wenn's die Anmeldung für's eigene Programm ist, reicht ein Vergleich zweier Hashwerte aus.

Wenn du aber mal im ersten Beitrag schaust will er sich die Daten für einen MySQL-Server speichern. Und an dem kann man sich nicht mit einem Hash anmelden. :wink:

Doch, wenn ich den Hash des Passwortes aus Edit4 als Datenbankpasswort verwende ;-)
Ok, gebe mich geschlagen, hätte genauer lesen müssen :oops:

Valle 24. Jan 2016 21:55

AW: Password in die INI schreiben
 
Zitat:

Zitat von strom (Beitrag 1327988)
Richtig, möchte das Passwort verschlüsselt speichern, und auch wieder lesen!
Sollte was einfaches sein, hat jemand ein Beispiel?

Zitat:

Zitat von mkinzler (Beitrag 1327989)
Dann musst Du einen Verschlüsselungscodec wie 3DES oder Rijndael(AES) verwenden.

Kleiner Hinweis zum Thema Sicherheit.

Du hast hier zwei sinnvolle Möglichkeiten.
  1. Du verschlüsselst mit einem modernen Verfahren das abgespeicherte Passwort. Dann musst du beim Programmstart aber den Nutzer nach dem Masterpasswort zu Entschlüsselung fragen. Das Passwort in deinem Programm zu hinterlegen bringt keinerlei Sicherheit!
  2. Falls du den Nutzer nicht nach einem Passwort fragen willst, dann speichere das Passwort einfach im Klartext. Biete am besten eine Option, ob das Passwort überhaupt gespeichert werden soll.

Unter Linux ist das so Standard, seit vielen Jahren und niemand beschwert sich. Wenn es jemanden stört, wird das Passwort einfach nicht gespeichert. Alternative kann man seine Festplatte verschlüsseln. Eine reine Verschleierung bringt einfach nichts. Ein Angreifer wird das Passwort herausfinden, wenn er Zugriff auf die Datei hat. Da hilft auch eine Verschleierung nichts. Also mach es dir nicht komplizierter als es ist.

Wenn du es wirklich sicher haben willst, dann musst du den Benutzer nach einem Passwort für die Verschlüsselung fragen. (Wobei du ihn dann auch direkt nach dem MySQL Passwort fragen könntest...) Eine Verschlüsselung ohne Nutzerabfrage kann nicht sicher sein!

Hoffe ich kann dir damit etwas helfen! :thumb:

Dejan Vu 25. Jan 2016 07:07

AW: Password in die INI schreiben
 
Wenn man schon Zugriffsinformation aus Bequemlichkeit (für den Anwender) lokal speichert, dann doch wenigstens verschlüsselt. Allemal besser, als unverschlüsselt. Man hält nämlich doch die meisten Kindsköpfe davon ab, 'nur so aus Spaß' eine mySQL-Konsole zu installieren, um sich dann -wie lustig- mal einzuloggen.

Auf dem Präsentierteller muss man die Zugriffsinformationen ja nicht gerade präsentieren. Welchen Algorithmus man dann benutzt, ist eher zweitrangig. Wer ihn knacken will, schafft es auch (weil er ja die Software hat).


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:04 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