Anleitung - Passwörter per Zufallsgenerator generieren

vom 27.04.2008, 22:07 Uhr

Wie hat euch mein 2.tes Tutorial gefallen?

Umfrage endete am 04.05.2008, 22:07
Sehr gut
1
50%
Gut
0
Keine Stimmen
Befriedigend
0
Keine Stimmen
Genügend
0
Keine Stimmen
Nicht genügend
1
50%
 
Abstimmungen insgesamt : 2

mt_srand((double)microtime()*1000000); // generiert das zufällige Passwort!


Gut, mein Follprofi (das sich übrigens Vollprofi schreibt), dann lass dir gesagt sein, dass diese Zeile nicht das Passwort generiert, sondern den Zufallsgenerator initialisiert und mit einem Wert versieht.

$letters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789öäüß!"§$%&/()=?`²³{[]}\~*'-"; // Die Zeichen, die das Passwort enthält


Dass die enthaltenden Sonderzeichen logisch völliger Schwachsinn sind, brauche ich hier wohl nicht zu erörtern, das hat mein Vorposter schon gesagt.

$pass .= substr($string, mt_rand(0,strlen($letters)-1), 1); // die Position wird gewählt


Dachte ichs mir.. welcher Neuling soll mit der Erklärung was anfangen können?

substr($string, start, ende) gibt einen Teil eines Strings von Anfang bis Ende zurück. Die Zeile hieße also:

Der Variable $pass wird immer 1 Zeichen angehängt (die letzte 1 in der Funktion). Dieses Zeichen wird aus dem Fundus der Variablen $letters genommen. Damit der Zufallsgenerator weiß, wie weit er zählen darf, wird er mit der Variablenlänge-1 initialisiert (das kommt daher, dass Substr bei 0 anfängt zu zählen und nicht bei 1).

So stimmt es. Das ist nicht mal soooo gut formuliert. Aber deswegen wollte ich ja deine Version hören. Nur hast du wahrscheinlich irgendwie die ganze Funktion zusammengefriemelt, ohne jemals den wirklich Sinn dessen zu verstehen, was du da eigentlich verwendest.

Wieviel Jahre ich schon PHP mache, sag ich mal nicht.. diese Klassifizierung wäre bei dir dann wohl schon Rentner :wink:

» Freddixx » Beiträge: 93 » Talkpoints: 0,15 »



Lassen wir das - hier uns noch auf diesem Weg wortwörtlich zu zanken werden unsere Meinungen/Weisheiten auch nicht verbessern.

Allen, denen das Tutorial gefällt, können es gerne kopieren;
Je nachdem ihr auf Englischen Tastaturen tippt etc. nehmt ihr die Variante ohne Sonderzeichen ($letters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; ).
Bei deutschen Tastaturen, ist es für die Sicherheit sicher besser, wenn ihr diese Variante nehmt:
$letters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789öäüß!"§$%&/()=?`²³{[]}\~*'-";

Für alle, den Script noch einmal:
<?php

function getpass()
{
// $pass= "";
$size=9;
$letters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789öäüß!"§$%&/()=?`²³{[]}\~*'-"; // bei deutschen Tastaturen
$letters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; // bei englischen bzw. anderssprachigen


mt_srand((double)microtime()*1000000);
for ($i=1; $i <= $size; $i++) {
$pass .= substr($string, mt_rand(0,strlen($letters)-1), 1); }
return $pass;
}
?>

Liebe Grüße! Freue mich diesmal auf keine Antworten zum Thema "Nicht dein eigener Script".

» noname1994-2 » Beiträge: 34 » Talkpoints: 0,13 »


Ich muss sagen, ist eigentlich eine schöne Idee hier so einen Passwortgenerator hineinzustellen. Ich finde, es ist auch gut verständlich von dir erklärt worden. Es ist eigentlich egal, ob man sich mit PHP auskennnt; ich denke man kann den Generator auch mit ein bisschen logischem Denken ohne PHP Kenntnisse nachvollziehen, vielleicht irre ich mich allerdings auch nur, weil ich mich schon was länger mit PHP und Java beschäftige.

» Pasi1990 » Beiträge: 12 » Talkpoints: 0,15 »



Für eine Zufallspasswort kannst du aber ebenso folgende Möglichkeiten nutzen:

Code: Alles auswählen
$zufallpw = rand(1,100000000);

Dadurch wird eine Zufallszahl zwischen 1 und 100000000 generiert. Wenn dir das noch nicht sicher genug ist, solltest du uniqid() nutzen.
Code: Alles auswählen
$zufallpw = uniqid();

Um das ganze dann sicher zu gestalten, gehört üblicherweise noch ein Hash auf das Passwort, die meisten verwenden md5. Das würde für die Beispiele wie folgt aussehen:
Code: Alles auswählen
$zufallpw1 = md5(rand(1,100000000));
$zufallpw2 = md5(uniqid());

Deine Version kommt mir irgendwie ziemlich umständlich vor. Wenn dir uniqid() ein zu langes liefert, kann du es noch kürzen (z.B. auch auf neun Stellen) und auf das gekürzte Passwort dann einen md5-Hash legen. Wichtig ist, dass du einen md5-Hash nicht entschlüsseln kannst, deshalb sollte man das Passwort ohne Hash via Mail senden.

Benutzeravatar

» Big-D. » Beiträge: 1234 » Talkpoints: -10,32 » Auszeichnung für 1000 Beiträge



Ähnliche Themen

Weitere interessante Themen

^