php password generator

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

php password generator

Δημοσίευση από dva_dev » 09 Σεπ 2011 23:20

Χρειάστηκα σήμερα έναν password generator, γιατί ήθελα να δώσω passwords σε μια λίστα από emails που έφτιαχνα, και δεν μου πέρασε καν απο το μυαλό ότι το συγκεκριμένο το έχουν χρειαστεί χιλιάδες πριν από μένα. Οπότε ξεκίνησα να γράφω κώδικα και ιδού:

Κώδικας: Επιλογή όλων

<?php
header&#40;'Content-type&#58; text/plain'&#41;;
function generatePassword&#40;$len&#41;
&#123;
    $passwordChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*&#40;&#41;-_=+&#91;&#93;&#123;&#125;\\|,<.>/?`~;&#58;';
    $passwordCharsLen = strlen&#40;$passwordChars&#41;;
    $tmp = '';
    for &#40;$i=0; $i < $len; $i++&#41;
    &#123;
        $x = rand&#40;1, $passwordCharsLen&#41;;
        $tmp .= $passwordChars&#91;$x-1&#93;;
    &#125;
    return $tmp;
&#125;
    if &#40;isset&#40;$_GET&#91;'len'&#93;&#41;&#41; $len = &#40;int&#41;$_GET&#91;'len'&#93;;
    if &#40;&#40;$len < 4&#41; || &#40;$len > 128&#41;&#41; $len = 8;
    echo generatePassword&#40;$len&#41;;
?>
Ισως βέβαια το να έψαχνα και να δοκίμαζα τι δουλεύει και τι όχι να μου έπαιρνε περισσότερο χρόνο απ΄ όσο μου πήρε να κάτσω να το γράψω μόνος μου, αλλά δεν πρόκειται να το μάθω ποτέ&#8230;

O επόμενος ίσως να σκεφτεί να κάτσει να κάνει μια αναζήτηση για να μην ανακαλύπτει πάλι τον τροχό... :-?

link

pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

php password generator

Δημοσίευση από pimpogio » 09 Σεπ 2011 23:37

το θεμα ειναι ομως και που/πως θα τους αποθηκευεις...

πρεπει να ειναι κατι που να μεταφερετε ασφαλες και ευχρηστο ωστε να συνεργαζετε με τα προγραμματα και τους browsers κατι σε flashaki...

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

php password generator

Δημοσίευση από dva_dev » 10 Σεπ 2011 00:18

Το θέμα είναι να μην δημιουργείς passwords με το χέρι.

Μιας και το ανέφερες όμως, εγώ τους αποθήκευσα σε ένα φύλλο excel μαζί με το αντίστοιχο email και το εκτύπωσα μέχρι να κάνω τη δημιουργία τους και την παραμετροποίηση του outlook στους χρήστες. Από κει και πέρα ας πάει ο καθένας να το αλλάξει αν θέλει σε κάποιο από τα κλασσικά 1234, 1111, ημερομηνία γέννησης.

Αν είναι να τα χρησιμοποιήσεις σε κάποια ιστοσελίδα, π.χ. για να δώσεις ένα αρχικό password σε κάποιον χρήστη που κάνει register (ή κάνει reset το password), του το στέλνεις με ένα email και το αποθηκεύεις στη βάση σου κωδικοποιημένο με sha256 και κάποιο user specific salt (που είτε το δίνει ο ίδιος, είτε το δημιουργείς και αυτό αυτόματα - για παράδειγμα με το username και το datetime που έκανε την εγγραφή).
Αν είναι να τα χρησιμοποιήσεις σε κάποιο windows/linux login τότε το γράφεις σε ένα post-it και το κολλάς στην οθόνη σου. Ούτε φλασάκια ούτε τίποτα. Post-it που μεταφέρεται εύκολα, είναι εύχρηστο, είναι γρήγορο και είναι φιλικό και προς το χρήστη.
KISS μεθοδολογία. :D

gorgoro
Δημοσιεύσεις: 98
Εγγραφή: 13 Δεκ 2010 14:14

php password generator

Δημοσίευση από gorgoro » 10 Σεπ 2011 15:41

να αλλο ενα σχεδον στο ιδιο στυλ

Κώδικας: Επιλογή όλων

<?php
function RandomStr&#40;&#41; &#123;
$lgt = 10;//αλλαζει με οσο μεγαλο θες
$char = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*&#40;&#41;-_=+&#91;&#93;&#123;&#125;\\|,<.>/?`~;&#58;'; // αυτο ειναι απο το δικο σου 
$stlgt = strlen&#40;$char &#41;;
$str='';
for &#40;$p = 0; $p < $lgt; $p++&#41; &#123;
$str .= $char&#91;mt_rand&#40;0, $stlgt&#41;&#93;;
&#125;
return $str;
&#125;
echo RandomStr&#40;&#41;;

//και για να το γραψεις σε txt

$myFile = "testFile.txt";
$fh = fopen&#40;$myFile, 'w'&#41; or die&#40;"can't open file"&#41;;
$stringData = RandomStr&#40;&#41;;
fwrite&#40;$fh, $stringData&#41;;
fclose&#40;$fh&#41;;

?>

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

php password generator

Δημοσίευση από dva_dev » 11 Σεπ 2011 00:45

Ελα να μαζευόμαστε σιγά σιγά να δούμε πόσοι έχουμε κάνει το ίδιο πράγμα ξανά και ξανά αντί να κάνουμε απλώς μια αναζήτηση (γιατί πολύ αμφιβάλλω ότι είμαστε μόνο δύο).
:P

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

php password generator

Δημοσίευση από korgr » 11 Σεπ 2011 09:38

dva_dev έγραψε:Ελα να μαζευόμαστε σιγά σιγά να δούμε πόσοι έχουμε κάνει το ίδιο πράγμα ξανά και ξανά αντί να κάνουμε απλώς μια αναζήτηση (γιατί πολύ αμφιβάλλω ότι είμαστε μόνο δύο).
:P
Καλά κάνεις και αμφιβάλεις :P

Κώδικας: Επιλογή όλων

	function generatePassword &#40;$length = 8&#41;&#123;
		$password = "";
		$possible = "12346789abcdefghjkmnpqrtvwxyz@#$%&*";
		$maxlength = strlen&#40;$possible&#41;;
		if &#40;$length > $maxlength&#41; $length = $maxlength;
		$i = 0; 
		while &#40;$i < $length&#41; &#123; 
			$char = substr&#40;$possible, mt_rand&#40;0, $maxlength-1&#41;, 1&#41;;
			if &#40;!strstr&#40;$password, $char&#41;&#41; &#123; 
				$password .= $char;
				$i++;
			&#125;
		&#125;
		return $password;
	&#125;

Άβαταρ μέλους
Punkis
Δημοσιεύσεις: 260
Εγγραφή: 27 Αύγ 2009 22:45

php password generator

Δημοσίευση από Punkis » 11 Σεπ 2011 10:54

Αυτό

Κώδικας: Επιλογή όλων

md5&#40;mcrypt_create_iv&#40;32, MCRYPT_DEV_URANDOM&#41;&#41;;
μαζί με ένα

Κώδικας: Επιλογή όλων

substr
γιατί τα πολλά λόγια είναι φτώχια...

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

php password generator

Δημοσίευση από korgr » 11 Σεπ 2011 12:55

Punkis έγραψε:Αυτό

Κώδικας: Επιλογή όλων

md5&#40;mcrypt_create_iv&#40;32, MCRYPT_DEV_URANDOM&#41;&#41;;
μαζί με ένα

Κώδικας: Επιλογή όλων

substr
γιατί τα πολλά λόγια είναι φτώχια...
Αυτό θα δημιουργήσει ένα human readable password για να το στείλεις στον user σου με email αν χάσει το παλιό?

Άβαταρ μέλους
Punkis
Δημοσιεύσεις: 260
Εγγραφή: 27 Αύγ 2009 22:45

php password generator

Δημοσίευση από Punkis » 11 Σεπ 2011 16:13

@korgr αν ο σκοπος σου ειναι να στειλεις password σε χρηστη πρεπει οπωσδηποτε να βαλεις και μια "secret word". π.χ. Με αυτό

Κώδικας: Επιλογή όλων

substr&#40;sha1&#40;$pass.$secret&#41;,0,8&#41;; 
θα εισαι ενταξει αν και αν δεν κανω λαθος το bcrypt ειναι το ανωτερο, αλλα ναι κανει της δουλεια σου μια χαρα και ειναι alphanumeric.

Επίσης αυτό δεν αρκει, χρειαζεται πάντα και verification οταν μιλαμε για αλλαγη password γιατι αν γνωριζω το email σου καθε ενα λεπτό θα εχεις διαφορετικο email.

(κανενα mobile version του forum παιζει;)

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

php password generator

Δημοσίευση από korgr » 11 Σεπ 2011 16:58

Η function που παρέθεσα με εξυπηρετεί καλύτερα γιατί κάνει δύο πράγματα που δεν υποστηρίζει η μέθοδός σου:

1. Δεν επαναλαμβάνει ψηφίο
2. Ορίζει από τι θα αποτελείται το password. Θέλω πάντα να υπάρχει η πιθανότητα και για symbols εκτός απο alphanumeric

Άβαταρ μέλους
Punkis
Δημοσιεύσεις: 260
Εγγραφή: 27 Αύγ 2009 22:45

php password generator

Δημοσίευση από Punkis » 11 Σεπ 2011 17:18

korgr έγραψε:Η function που παρέθεσα με εξυπηρετεί καλύτερα γιατί κάνει δύο πράγματα που δεν υποστηρίζει η μέθοδός σου:

1. Δεν επαναλαμβάνει ψηφίο
2. Ορίζει από τι θα αποτελείται το password. Θέλω πάντα να υπάρχει η πιθανότητα και για symbols εκτός απο alphanumeric
Δεν είναι η μέθοδος μου, είναι αυτό που χρησιμοποιείται σχεδόν παντού. Επιλογή σου, αλλά κάνε κάτι για brute force attack.

Oύτως η άλλως η μυστική λέξη μπορεί να περιέχει ότι θέλεις και σύμβολα.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

php password generator

Δημοσίευση από dva_dev » 11 Σεπ 2011 19:16

@korgr, δοκίμασε κάτι τέτοιο όποτε έχεις χρόνο. Βελτιώνει λίγο την ταχύτητα.

Κώδικας: Επιλογή όλων

function generatePassword &#40;$length = 8&#41;
&#123;
    $possible = "12346789abcdefghjkmnpqrtvwxyz@#$%&*";
    $maxlength = strlen&#40;$possible&#41;;
    if &#40;$length > $maxlength&#41; $length = $maxlength;
    $password = substr&#40;str_shuffle&#40;$possible&#41;, 0, $length&#41;;
    return $password;
&#125;

gorgoro
Δημοσιεύσεις: 98
Εγγραφή: 13 Δεκ 2010 14:14

php password generator

Δημοσίευση από gorgoro » 11 Σεπ 2011 20:28

dva_dev έγραψε:Ελα να μαζευόμαστε σιγά σιγά να δούμε πόσοι έχουμε κάνει το ίδιο πράγμα ξανά και ξανά αντί να κάνουμε απλώς μια αναζήτηση (γιατί πολύ αμφιβάλλω ότι είμαστε μόνο δύο).
:P
:D

Άβαταρ μέλους
mrpc
WebDev Moderator
Δημοσιεύσεις: 3393
Εγγραφή: 03 Μάιος 2000 03:00
Τοποθεσία: Εξάρχεια
Επικοινωνία:

php password generator

Δημοσίευση από mrpc » 11 Σεπ 2011 20:50

Πάντως πιστεύω ότι τα καλύτερα password δεν είναι μια σειρά από λίγους τυχαίους χαρακτήρες χωρίς νόημα. Πιο πολύ νόημα έχει μια μεγάλη φράση με κεφαλαία/μικρά,σύμβολα και αριθμούς, που να βγάζει νόημα για τον χρήστη.
Π.χ. IjoinedFreestuff.grat2000!
Εύκολο να το θυμάσαι, δεν σπάει εύκολα ακόμα και με λεξικό λόγω του συνδυασμού διαφορετικών λέξεων, και περιέχει κεφαλαία, μικρά, αριθμούς και σύμβολα.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

php password generator

Δημοσίευση από korgr » 11 Σεπ 2011 20:59

dva_dev έγραψε:@korgr, δοκίμασε κάτι τέτοιο όποτε έχεις χρόνο. Βελτιώνει λίγο την ταχύτητα.

Κώδικας: Επιλογή όλων

function generatePassword &#40;$length = 8&#41;
&#123;
    $possible = "12346789abcdefghjkmnpqrtvwxyz@#$%&*";
    $maxlength = strlen&#40;$possible&#41;;
    if &#40;$length > $maxlength&#41; $length = $maxlength;
    $password = substr&#40;str_shuffle&#40;$possible&#41;, 0, $length&#41;;
    return $password;
&#125;
Σωστός!
Σε ευχαριστώ :D

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες