AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language FreePascal Fehler beim Passwortstärkeberechnung

Fehler beim Passwortstärkeberechnung

Ein Thema von AlexII · begonnen am 11. Dez 2014 · letzter Beitrag vom 11. Dez 2014
Antwort Antwort
Seite 1 von 2  1 2   
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#1

Fehler beim Passwortstärkeberechnung

  Alt 11. Dez 2014, 10:45
Delphi-Version: 7
Hallo,

ich lasse wie folgt die Passwortstärke berechnen.

Delphi-Quellcode:
procedure TForm1.PassStrength();
var
  a, b, c, d, e, f, summezeichen, potenz, jahre: Float;
begin
  if UppercaseCB.Checked then a := 26 else a := 0;
  if LowercaseCB.Checked then b := 26 else b := 0;
  if DigitsCB.Checked then c := 10 else c := 0;
  if ArithmoperatorsCB.Checked then d := 5 else d := 0;
  if BracketCB.Checked then e := 8 else e := 0;
  if SpecialcharsCB.Checked then f := 19 else f := 0;

  summezeichen := (a + b + c + d + e + f);
  potenz := Power(summezeichen, vPasslength);
  jahre := ((potenz / 2096204400) / 31536000) / 1000;

  PassStrengthLabel.Left := (Shape1.Width - PassStrengthLabel.Width) div 2;

  if Round(jahre) <= 10 then
  begin
    Shape1.Brush.Color := clRed;
    PassStrengthLabel.Caption := FloatToStr(Round(jahre)) + ' ' + 'Schwach';
  end else if (Round(jahre) >= 11) and (Round(jahre) <= 70) then
  begin
    Shape1.Brush.Color := clYellow;
    PassStrengthLabel.Caption := FloatToStr(Round(jahre)) + ' ' + 'Gut';
  end else
  begin
    Shape1.Brush.Color := clGreen;
    PassStrengthLabel.Caption := FloatToStr(Round(jahre)) + ' ' + 'Sehr gut';
  end;
end;

Das funktioniert soweit gut, aber ab und zu bekomme ich diese Fehlermeldung, siehe Screenshot. Ich verstehe schon, dass es irgendwie mit zu großen Zahlen zu tun hat... aber wie ich das löse weiß ich jetzt nicht. Bin für jede Hilfe dankbar. ))
Miniaturansicht angehängter Grafiken
screenshot-fehlermeldung.png  
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.753 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Fehler beim Passwortstärkeberechnung

  Alt 11. Dez 2014, 10:52
Das sieht mir viel zu sehr nach Voodoo aus.
Sogenannte starke Passwörter führen nur zu Post-Its am Bildschirm, weil man sich die Biester nicht merken kann. Vor allem, wenn man noch verlangt die bitte schön alle zwei Wochen zu ändern.

Zur Lösung des Problems: Nimm kleinere Zahlen bei der Berechnung des Wertes von jahre - cooler, irreführender Bezeichner btw.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Fehler beim Passwortstärkeberechnung

  Alt 11. Dez 2014, 10:54
Das sieht mir viel zu sehr nach Voodoo aus.
Sogenannte starke Passwörter führen nur zu Post-Its am Bildschirm, weil man sich die Biester nicht merken kann. Vor allem, wenn man noch verlangt die bitte schön alle zwei Wochen zu ändern.

Zur Lösung des Problems: Nimm kleinere Zahlen bei der Berechnung des Wertes von jahre - cooler, irreführender Bezeichner btw.

Sherlock
Das ganze ist noch ein Prototyp, ich werde noch so einiges ändern und die Variablen bekommen englische Bezeichner.
Aber wie kann ich kleinere Werte nehmen? Dann stimmt doch die Berechnung nicht.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Headbucket

Registriert seit: 12. Dez 2013
Ort: Dresden
172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Fehler beim Passwortstärkeberechnung

  Alt 11. Dez 2014, 10:54
Führe dein Programm doch mal im Debugger aus.

Dann siehst du genau, an welcher stelle es "knallt". Zur Not musst du es halt mehrmals versuchen, wenn der Fehler nur selten auftritt.

Mal angenommen keine deiner Checkboxen ist angewählt...in diesem Fall wird für "summezeichen" 0 berechnet (die Klammern kannst du hier weglassen).
Wenn nun die Passwortlänge auch 0 ist, so rechnest du in der nächste Zeile 0^0.

Hier wird wohl die Fehlermeldung herkommen.
Okay. Mathe ist wohl schon ein Weilchen her. Das wars nicht. Ab der Zeile hatte ich dann aufgehört zu lesen.
Delphi macht aus 0^0 = 1. So wie es auch bei Wikipedia steht. Da hat mich mein Taschenrechner im Stich gelassen.

Du solltest dir also etwas überlegen, um diesen Fall abzufangen.
Beispiel: Du prüfst am Anfang der Prozedure, ob die Passwortlänge > 0 ist. Ist das nicht der fall -> exit

Gruß
Headbucket

Geändert von Headbucket (11. Dez 2014 um 11:00 Uhr)
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Fehler beim Passwortstärkeberechnung

  Alt 11. Dez 2014, 11:00
Führe dein Programm doch mal im Debugger aus.

Dann siehst du genau, an welcher stelle es "knallt". Zur Not musst du es halt mehrmals versuchen, wenn der Fehler nur selten auftritt.

Mal angenommen keine deiner Checkboxen ist angewählt...in diesem Fall wird für "summezeichen" 0 berechnet (die Klammern kannst du hier weglassen).
Wenn nun die Passwortlänge auch 0 ist, so rechnest du in der nächste Zeile 0^0.

Hier wird wohl die Fehlermeldung herkommen.
Okay. Mathe ist wohl schon ein Weilchen her. Das wars nicht. Ab der Zeile hatte ich dann aufgehört zu lesen.

Du solltest dir also etwas überlegen, um diesen Fall abzufangen.
Beispiel: Du prüfst am Anfang der Prozedure, ob die Passwortlänge > 0 ist. Ist das nicht der fall -> exit

Gruß
Headbucket
Ja die Passwortlänge 0 und > 33 werde ich abfangen (ich meine Passwortlänge > 33 berechne ich nicht, weil das in jedem Fall sehr gut ist). Aber der Fehler liegt irgendwo dazwischen.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von cookie22
cookie22

Registriert seit: 28. Jun 2006
Ort: Düsseldorf
936 Beiträge
 
Delphi XE2 Professional
 
#6

AW: Fehler beim Passwortstärkeberechnung

  Alt 11. Dez 2014, 11:41
Ob ein Passwort gut ist oder nicht, kannst du aber nicht wirklich berechnen. Da musst du schon die Entopie mit einbeziehen.
Gruß
Cookie
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.753 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Fehler beim Passwortstärkeberechnung

  Alt 11. Dez 2014, 11:43
Hast Du eine Quelle für den Algorithmus, oder ist das selbst ausgedacht? Eventuell könnte man da ansetzen.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Fehler beim Passwortstärkeberechnung

  Alt 11. Dez 2014, 11:58
Ob ein Passwort gut ist oder nicht, kannst du aber nicht wirklich berechnen. Da musst du schon die Entopie mit einbeziehen.
Ich verstehe was Du meinst, aber in meinem Fall kann ich das, da ich ganz genau weiß mit welchen Zeichen ich das Passwort erstelle und wie lange das Passwort ist. Meine Anwendung generiert sie. Hätte der User das Passwort selber eingegeben, dann hast Du recht, hier greift meine Methode nicht.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Fehler beim Passwortstärkeberechnung

  Alt 11. Dez 2014, 12:08
Hast Du eine Quelle für den Algorithmus, oder ist das selbst ausgedacht? Eventuell könnte man da ansetzen.

Sherlock


Ich habe das selber ausgedacht.

(((Anzahl Zeichen^Passwortlänge)/Schlüssel in der Sekunde, dass ein moderner Rechner schafft)/Sekunden im Jahr)/1000

Ich teile das ganze durch 1000 um die Entwicklung der Prozessoren einzuberechnen.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!

Geändert von AlexII (11. Dez 2014 um 12:12 Uhr)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#10

AW: Fehler beim Passwortstärkeberechnung

  Alt 11. Dez 2014, 12:19
Die Formel berechnet also die Anzahl der möglichen Kennwörter, die sich mit den Checkbox-Einstellungen generieren lassen. Aus dieser Anzahl wird unter der Annahme, das soundsoviele Kennwörter pro Sekunde mit brute force probiert werden, die Anzahl der Jahre ausgerechnet, die ein BF-Algorithmus benötigt, um alle Kombinationen durchzurechnen. Soweit richtig geraten?

Na ja. Nicht blöd und kein Voodoo (außer die Geschwindigkeit des BF, da würde ich noch die Quelle angeben).
...jahre - cooler, irreführender Bezeichner
Wenn ich die Idee richtig verstanden habe, ist das weder irreführend noch cool, weil richtig.
...die Variablen bekommen englische Bezeichner.
Was hast Du gegen deutsche Bezeichner? Lieber einen verständlichen deutschen Bezeichner als ein mit google.translate übersetzten, über den sich die Engländer krank lachen. aber deine 'a,b,c,d,e' etc. solltest Du mit besser benennen.
Delphi-Quellcode:
var
  AnzahlUnterschiedlicherZeichen : integer;

begin
  AnzahlUnterschiedlicherZeichen := 0;
  if UppercaseCB.Checked then inc (AnzahlUnterschiedlicherZeichen , 26);
  if LowercaseCB.Checked then inc (AnzahlUnterschiedlicherZeichen , 26);
  if DigitsCB.Checked then inc (AnzahlUnterschiedlicherZeichen , 10);
  if ArithmoperatorsCB.Checked then inc(AnzahlUnterschiedlicherZeichen ,5);
  if BracketCB.Checked then inc (AnzahlUnterschiedlicherZeichen , 8);
  if SpecialcharsCB.Checked then inc (AnzahlUnterschiedlicherZeichen , 19);


...
Dann versteht man gleich, worum es geht. Oder?

Zum Problem:
Anstatt 'Power' zu nehmen, machst Du das mit einer Schleife und teilst 1x in der Schleife, falls das Zwischenergebnis zu groß wird. Wenn die Schleife durch ist, prüfst Du, ob Du schon geteilt hast. Wenn nicht (weil das Zwischenergebnis doch nicht zu hoch war), teilst Du dann.

Hehe: Roter Kasten: Richtig geraten

Geändert von Dejan Vu (11. Dez 2014 um 12:23 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 05:55 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