DruckenMister WongFacebook

Zufallspasswort generieren

System Win9x, WinNT, Win2000, WinXP, Vista, Win7
Ab Delphi-Version Delphi 1
Letzte Änderung 28.09.2010

Folgende Funktion genertiert ein Zufallspasswort. Als Parameter erwartet die Funktion eine Zahl, die die Länge des Passworts ausgibt:


function RandomPassword(PLen:Integer):String;
var
  str:String;
begin
  Randomize;
  //string with all possible chars
  str:='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  Result:='';
  repeat
    Result:=Result+str[Random(Length(str))+1];
  until(Length(Result)=PLen)
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  //generate a password with 10 chars
  Label1.Caption:=RandomPassword(10);
end;
 

Diese Function generiert ein Passwort mit festgelegter Länge

type
TPasswordMode = set of (pmUpper, pmLower, pmNumbers, pmExtra);


function GeneratePassword(ALength: Integer; Mode: TPasswordMode):string;
const
  cLower   = 'abcdefghijklmnopqrstuvwxyz';
  cUpper   = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  cNumbers = '0123456789';
  cExtra   = '°!"§$&/()=-+*?ß}{][@<>.,;:_~';
 
var
  i : Integer;
  S : string;
  iM: BYTE;
begin
  // Kein mode angegeben, dann raus...
  if Mode = [] then Exit;

  i := 0;
  Randomize;
 
  while (i < ALength)  do
  begin
    iM := RANDOM(4);
    case iM of
      // Kleinbuchstaben
      0: if (pmLower in Mode) then begin
            S := S + cLower[1+RANDOM(Length(cLower))];
           Inc(i);
          end;
      // Grossbuchstaben
     1: if (pmUpper in Mode) then begin
           S := S + cUpper[1+RANDOM(Length(cUpper))];
          Inc(i);
         end;       
      // Nummern
      2: if (pmNumbers in Mode) then begin
           S := S + cNumbers[1+RANDOM(Length(cNumbers))];
           Inc(i);
          end;
      // Sonderzeichen
      3: if (pmExtra in Mode) then begin
           S := S + cExtra[1+RANDOM(Length(cExtra))];
           Inc(i);
         end;
    end;
  end;
  // Generiertes Passwort zurueckgeben
  Result := S;
end;

Aufruf zum Beispiel so:


// 12 Stelliges Passwort mit Klein und Grossbuchstaben sowie Zahlen
// generieren.
Edit1.Text := GeneratePassword(12, [pmUpper, pmLower, pmNumbers]);