Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Algorithmen (https://www.delphipraxis.net/28-library-algorithmen/)
-   -   Delphi Ein Zufallspasswort generieren (https://www.delphipraxis.net/6731-ein-zufallspasswort-generieren.html)

Daniel B 20. Jul 2003 12:58


Ein Zufallspasswort generieren
 
Hallo,

hiermit kann man ein Passwort erzeugen lassen. Die Länge kann man einstellen, und auch ob Sonderzeichen verwendet werden sollen.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
end;

function RandPW(iPWLen: Integer; bSpecial: Boolean): String;
var
  sPW: string;
begin
  sPW := 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  if bSpecial then
  begin
    sPW := sPW + '1234567890!"§$%&/()=?~+,.-{}[]²³\|*';
  end;
  Result := '';
  repeat
    Result := Result + sPW[Random(Length(sPW)) + 1];
  until
    (Length(Result) = iPWLen);
end;
Aufrufen hiermit:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(RandPW(5, True)); //5 ist die Länge des Passwortes und das True ob auch Sonderzeichen verwendet werden sollen
end;
Grüsse, Daniel :hi:

negaH 20. Jul 2003 13:57

Re: Ein Zufallspasswort generieren
 
Die Anwendung solcher Passwörter ist sicherlich besser als das eigene Geburtsdatum oder den Namen der Freundin zu verwenden, aber man sollte zur obigen Methode bemerken das sie nicht sehr viel sicherer ist.

Der Zufallsgenerator von Delphi arbeitet als LCG = Linear Congruental Generator. Diese LCG's sind sehr gut erforscht und nicht kryptograpisch sicher. D.h. man kann aus einer durch den LCG erzeugten Sequenz von Bytes den Startwert des LCG's berechnen.

Borlands LCG hat im besten Falle eine Periode von 2^32. D.h. man kann nur 2^32 verschiedene Sequenzen erzeugen und somit auch nur 2^32 verschiedenen ~2 Zeichen Passwörter.

Damit würde obiger Code eine ideale Basis für eine Tabellenorientierte Brute Force Attacke darstellen, ohne das man eine Tabelle vorrausberechnen müsste.

Erzeugt man durchschnittlich 24 Zeichen Passwörter dann würde dies die Anzahl der möglichen Passwörter reduzieren auf 2^25.
Heutige Annahmen gehen davon aus das ein 128 Bit Schlüssel bestehend aus echten Zufall sicher ist (2^128 mögliche Schlüssel), und keine akzeptablen Brute Force Attacken durchführbar machen.

Wenn man also mit obigen Algorithmus 128 Bit Passwörter erzeugen würde dann würde aus allen 2^128 möglichen Passwörtern nur 2^32 verschiedene gewählt. Der Algo. wäre somit nut 1 / 2^92 so stark wie echte 128 Bit Passwörter. Daher könnte man von vorhinen nur mit 32Bit Passwörtern, eg. ~6 zeichen lang, benutzen.

Eine Brute Force Attacke mit einem Set von 2^32 möglichen Passwörtern ist absolut durchführbar.

Gruß Hagen

PS: Die Zeichencodierung spielt dabei weniger ein Rolle. In meiner Analyse ging ich vom MIME Base 64 Zeichensatz aus.


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