Entwickler-Ecke

Freeware Projekte - Passwortgenerator


Philipp S - Mi 03.08.11 16:46
Titel: Passwortgenerator
Hallo liebe Mitdelphiisten,

ich habe mir seit langem mal wieder die Mühe gemacht ein neues Programm zu entwickeln, mit Delphi 6. ;)
Nach einem einfachen Münzwurfspiel mit dem Besitzer als Gewinner habe ich mir gedacht, mache ich doch mal ein nützliches Programm.
Damit entstand der Passwortgenerator. Hier präsentiere ich euch die erste Stufe des guten Stücks und bitte um reichlich Verbesserungsvorschläge.

Dann habe ich auch gleich noch eine kleine Frage an die Community, wie könnte ich eine kleine Anleitung einbinden, evtl. in noch einem zweiten Fenster, oder eher als Dateilink auf ein PDF? Wie funktioniert das?

MfG Philipp

Moderiert von user profile iconNarses: Anhang aktualisiert.


Niko S. - Mi 03.08.11 17:15

Ich hab meinen immer mit CheckBoxen versehen, anstatt mit Radiobuttons.
Finde ich persönlich besser gelöst.
Dazu würde ich eventuell noch ne Box einfügen mit den Sonderzeichen die man drin haben will bzw drin sind.
Und mach die Form kleiner, das ist zu Überdimensioniert.
Die Angabe der Länge kannst du ja über nem SpinEdit regeln.
Wenn es in Delphi 6 noch keinen SpinEdit gibt, kannste es ja leicht selbst bauen.


Sinspin - Do 04.08.11 14:50

Hi,

warum springt die Auswahl der Sicherheisstufe immer wieder auf den ersten Eintrag und nimmt nur Zahlen fürs Password?
Warum gibst du eine derart umständliche Anleitung zum kopieren in die Zwischenablage an wenn es doch auch einfach mit Rechtsclick und im kommenden Popup mit kopieren geht.
Als letztes schließe ich mich meinem Vorredner an und plädiere für Checkboxen zur Auswahl der Zeichengruppen die enthalten sein sollen und einem Freitextfeld für weitere Zeichen die man reinhaben will.


Sliver18 - Do 04.08.11 15:59

user profile iconPhilipp S hat folgendes geschrieben Zum zitierten Posting springen:
Hallo liebe Mitdelphiisten,

Dann habe ich auch gleich noch eine kleine Frage an die Community, wie könnte ich eine kleine Anleitung einbinden, evtl. in noch einem zweiten Fenster, oder eher als Dateilink auf ein PDF? Wie funktioniert das?

MfG Philipp


Hey Philipp,

ich hab auch mal eine Methode gesucht, eine PDF anzuzeigen - und stieß dabei ständig auf DLL's oder kostenpflichtige Komponenten. Ich habe dann jedoch einen TWebbroser auf einer TForm plaziert und navigiere dann zu dem PDF - was sich natürlich zu nutze Macht, dass ein dementsprechendes Plugin (hoffentlich) auf dem System, dass das Programm verwendet, installiert ist. Aber das sollte man ja überprüfen können.


Philipp S - Fr 05.08.11 03:16

Hallo,

vielen Dank für die bisherigen Hinweise. :D Das mit dem Zurückspringen des Radiobuttons hatte ich gleich danach bemerkt und korrigiert, da stand ein Befehl doppelt und an der falschen Stelle, konnte es aber leider nicht mehr hochladen!^^ ;)

Die Größe habe ich auch verringert, sieht wirklich besser aus und habe nun das Editfeld mit einem UpDown versehen.

Als nächstes nehme ich mir die Checkboxen vor. Mit der Anleitung möchte ich eine einfache Textdatei einbinden über eine Schaltfläche am besten, wie könnte ich das realisieren??

FG Philipp

Moderiert von user profile iconNarses: Anhang in den ersten Beitrag verschoben.


Delete - Fr 05.08.11 05:55

Bingo. :mrgreen:

Immer mein erster Test:
Zitat:
---------------------------
Passwortgenerator 1.0
---------------------------
'sdfsf' ist kein gültiger Integerwert.
---------------------------
OK
---------------------------


HeftCD - Fr 05.08.11 09:36

außerdem fängst Du mit der Einstellung Passwortlänge = 1 an - mittlerweile werden mindestens 10 vorgeschrieben, da man 8 Zeichen auf einem aktuellen Dualcore Laptop auch schon in einem Jahr (253 Tage bei 8 verwendeten aus 62 versch. mögl. Zeichen [Groß,Klein,Zahlen]) cracken kann.

oder arbeitest Du für den CIA und möchtest denen die Arbeit erleichtern? :)



... so, da wollen wir mal:
Da müßte in dem dritten TAB immer noch die Richedit-komponente sein.
Damit kannst Du formatierte RTF Dateien laden (sieht besser aus; dickere Überschriften usw.)

dann ein Button namens "Hilfe"


und in die zweite Form ein MEMO und ein Button 'Close'



ganz oben unter "implementation" in der ersten Form den Namen der zweiten unit eintragen, - also

Delphi-Quelltext
1:
USES unit2;                    


dann im Hilfe-Button der ersten Form

Delphi-Quelltext
1:
2:
3:
4:
5:
try
    form2.Richedit1.lines.loadfromfile('.\HilfeDatei.rtf');
else
    MessageDlg ('Hilfe-Datei existiert nicht !',mtError, [mbOK], 0);
end;


oder

Delphi-Quelltext
1:
2:
3:
4:
5:
 if FileExists('.\HilfeDatei.rtf'then
    form2.Richedit1.lines.loadfromfile('.\HilfeDatei.rtf')
else
messag ... s.o.
end;


.\ im DateinamenString sorgt dafür, daß das Programm später im Anwendungs/Programm/exe) Verzeichnis - aus dem es gestartet wurde - nach der Datei sucht - damit vermeidest Du einen konkreten Pfad wie 'C:\Programme\MeinPWgenerator\Hilfe.rtf' - welcher auf anderen Systemen nicht stimmen muß und zu Fehlern führen könnte.

und dann kannste noch
statt der Radiobuttons die 5 Checkboxen anlegen und 1 weiteres Editfeld.
und machst dann im Generieren Button

Delphi-Quelltext
1:
2:
3:
4:
if checkbox1.checked then Auswahl := 'ABCDE';
if checkbox2.checked then Auswahl := 'abcde';
...
if checkbox5.checked then Auswahl := 'ABCDEabcd123465' + Edit2.text;


und genrierst dann davon.

und unter FORM.Create () machste

Delphi-Quelltext
1:
Edit2.text := ' !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~';                    

(das erste ist ein LEERZEICHEN - könnte man auch noch optional mit ner weiteren Checkbox dranhängen/auslagern)

und dann noch:
ein Button 'Copy'
und trägst dann da ein:

Delphi-Quelltext
1:
Clipboard.astext := Edit1.text;                    


und fügst ganz oben in der unit noch unter USES Windows, sysutils, bla ... , clipbrd; ein, damit's läuft.



und dann vermeide aber bitte einen "Registrieren/KAUFEN - nur 29 Euro" Button :)
weil sowas gibt's schon wie Sand am Meer. :)



und erklär mir doch bitte noch, warum der bei 10.000 Zeichen ganze 4 Sekunden braucht?
[Aha, dafür ist also die Prograessbar doch notwendig ... aber ungewönlich ] - also, WARUM ?


Niko S. - Fr 05.08.11 10:21

Er könnte auch konstanten für die Zahlen und Buchstaben deklarieren.

Delphi-Quelltext
1:
2:
3:
4:
const
  lower = 'abcdefghijklmnopqrstuvwxyz';
  upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  digit = '0123456789';


Und diese dann verbinden..

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
Auswahl := '';
if (Box1.Checked) then
  Auswahl := Auswahl + lower;
if (Box2.Checked) then
  Auswahl := Auswahl + upper;
// und so weiter


Und wenn wir dann schon dabei sind: Wie kontrollier ich, was in einem Edit-Feld eingetragen wird?
Da gibt es mehrere Möglichkeiten...

Direkt beim übernehmen der Zahl

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
...
try
  ZeichenLaenge := StrToInt(Edit1.text);
except
  ZeichenLaenge := -1
end;

if (ZeichenLaenge = -1then
begin
  ShowMessage('Du solltest schon eine Zahl eintippen.');
  ZeichenLaenge = 1// standard Wert..
end;


Beim Eintippeln der Zahlen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
// entweder hier
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
begin
  if not (Key in ['0'..'9'#9#8]) then
    Key := #0;
end;  

// oder hier
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if not (Chr(Key) in ['0'..'9'#9#8]) then
    Key := 0;
end;


Womöglich sollte man beides machen, wobei ich nicht glaube, dass der User versucht das Programm zu hacken um unerlaubte Zeichen einzuschleusen. (Warum auch)...
#8 ist die Tab-Taste und #9 die "Zurück" Taste.
#13 wäre die Enter-Taste

An der Stelle mal ne Frage, besitzt Delphi die Funktion "StrToIntDef"?

PS: Ich könnt schwören, dass gerade wegen dem Fortschrittsbalken, das Generieren der extrem langen Zeichenketten so lange dauert.
Das Programm Zeichnet ja erst das ding bevor es weiter macht und wenn es 10000 mal gezeichnet werden muss (leer -> voll) dann dauert das seine Zeit..


Narses - Fr 05.08.11 12:06

Moin und :welcome: im Forum!

Aktualisiere bitte demnächst dein Programm im ersten Beitrag des Threads, so wie es die Regeln für diese Sparte vorsehen. Danke. ;)

Grund: So muss nicht jeder immer den ganzen Thread durchlesen, um an die aktuellste Version deines Programms zu kommen. :idea:

cu
Narses


Sliver18 - Fr 05.08.11 12:07

user profile iconNiko S. hat folgendes geschrieben Zum zitierten Posting springen:


An der Stelle mal ne Frage, besitzt Delphi die Funktion "StrToIntDef"?



Ja - Ich habs grad getestet in Delphi 7. Kannte ich noch nicht - danke.