Wie kann ich ein zufälliges Passwort generieren?

(Autor: BPA & perl-community)

Oft soll zufällig ein Passwort generiert werden. Wie dies realisiert werden kann, soll hier gezeigt werden.

1. Einfaches Passwort aus 8 Zahlen
2. Passwort aus Buchstaben, Zahlen, Sonderzeichen
3. (kritische) Anmerkungen zum "Erschaffen" von Zufallszahlen.

Grundsätzlich ist zu sagen, dass es "weniger sichere" und "sicherere" Passwörter gibt. Wirklich "sicher" ist, wie immer nur, dass nichts sicher ist ...

1. Hier wird ein einfaches Passwort aus 8 Zahlen generiert

        #!/usr/bin/perl -w

        use strict;

        my $passwort;
        my $i=0;
        my @numbers;

        while ($i < {
                $numbers[$i] = int(rand(10));
                $i++;
        }
        $passwort = join("", @numbers);
        print "Das Passwort ist $passwort";

Über eine while-Schleife erzeugen wir acht zufällige Zahlen aus dem Vorrat 0..9 {Dies geschieht mittels rand(10)}. Wie bei einem Array, wird hier bei 0 begonnen!). Diese werden als Elemente in einem Array (@numbers) abgelegt. Anschließend wird mittels join aus den einzelnen Arrayelementen ein einziger String generiert (Es wird kein Zeichen, zwischen den einzelnen Elementen abgelegt, weil zwischen den beiden Anführungszeichen nichts steht).

Dies ist ein "weniger gutes" Passwort, da nur die Zahlen 0 bis 9 vorkommen. Mit einem BruteForce? Angriff wäre dies wohl relativ einfach zu knacken.

2. Ein Passwort aus einem größeren Zeichenvorrat generieren

        #!/usr/bin/perl -w

        use strict;

        my $passwort;
        my @chars;

        @chars = ("A" .. "Z", "a" .. "z", 0 .. 9, qw(! @ $ % ^ & *) );
        $passwort = join("", @chars[ map {rand @chars } (1 .. 8) ]);
        print "Das Passwort ist $passwort";

Grundsätzlich geben wir hier ein Array an, dass den "Zeichenvorrat" speichert (@chars). Den Folgenden Ausdruck betrachten wir von innen nach außen. map sorgt dafür, dass der Ausdruck rand @chars (der ein Zeichen zufällig aus dem Zeichenvorrat wählt) für jedes Element der nachstehenden Liste (1..8) evaluiert wird. Dies entspricht eigentlich der while-Schleife im ersten Beispiel, da jedoch Perlprogrammierer von Natur aus faul sind (Nein, sie wollen eigentlich nur effizient arbeiten.) und es mittels map kürzer geht, bevorzugen wir dies.

Wir erhalten also ein Array mit acht zufällig gewählten Zeichen aus dem Zeichenvorrat.

Nun fügen wird diese acht Zeichen mit Hilfe von join zu einem String zusammen.

Dieses Passwort ist "sicherer" als das erste. Für Foren usw. sollte es ausreichen. Wenn Sie in ihrem Keller geheime Regierungsakten sichern, sollten Sie grundsätzlich zu einer anderen Methode greifen.

Ergänzungen, Kommentare

Kommentare werden am besten in folgender Form vorgenommen, damit sie im Inhaltsverzeichnis angezeigt werden:
       ---### Main.??? - 14 Jul 2003 - Betreff
      

UtilFaqSubForm edit

Titel Wie kann ich ein zufälliges Passwort generieren?
Autor BPA & perl-community
Bereich FaqZahlen
Topic revision: 2004-07-14, HaraldBongartz
 
Bitte die NutzungsBedingungen beachten.
Bei Vorschlägen, Anfragen oder Problemen mit dem PerlCommunityWiki bitten wir um WebBottomBarExample">Rückmeldung.