Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] zapomniane hasło - $haslo = md5( mt_rand ()
Forum PHP.pl > Forum > PHP
herbatniczek
jeśli ktoś zapomni hasła, to u mnie dostaje haso tymczasowe, generowane przez system.

Czy ktoś wie ile możliwości daje $haslo = md5( mt_rand () ); ?
- prosze o przeliczenia linijka pod linijką smile.gif

oto moje przeliczenia, poprawcie je smile.gif

mt_rand() zwraca liczbe od 0 do RAND_MAX (ile to rand_max)? - a więc to jest x liczb powiedzmy.

liczba z mt_rand jest hashowana przez md5 - wychodzi 32 znakowa liczba hexa.
liczb hexa 32 znakowych jest 16^32

czy ilosc wyników to 16^32*RAND_MAX ?
rogrog
wg mnie kombinacji jest <= randmax ale to i tak dużo i dzięki md5 nie do odgadniecia

chociaz moze lepsze bylo by uniqid()
kszychu
I co, jak ktoś zapomni hasła, to generujesz mu takiego potworka? I biedaczysko musi wklepywać ten ciąg znaków? Ile to właściwie ma cyfr?

P.S. Czy zauważyliście, że użyłem samych zdań pytających? laugh.gif
nibytak
uda ci sie wygenerowac randmax ciagow, lub randmax + 1 jesli liczyc od zera. nie jestem pewien czy md5() generuje zawsze unikalne wartosci?
rogrog
Cytat(nibytak @ 2005-03-22 19:14:44)
uda ci sie wygenerowac randmax ciagow, lub randmax + 1 jesli liczyc od zera. nie jestem pewien czy md5() generuje zawsze unikalne wartosci?

nie zawsze ale kolizje są rzadkie
herbatniczek
więc rand_max

jak lepiej wygenerować hasło?

żeby było w miarę krótkie 16zn i łatwe do odgadnięcia?
vala
zdeklaruj sobie tablice

Kod
$znaczki=array("a","b","c","d")


nastepnie w petli wybieraj 16 razy znaczek z tablicy(oczywiscie rand ( 0, sizeof($znaczki)) )
potem dodawaj do stringa
zapisuj w md5 do bazy
a reszte na maila
przynajmniej ja to tak widze ? moze jest cos lepszego:)
rogrog
lepiej wiekszy zestaw znaków ale krótsze - 6 do 8 znaków
jono
Najprostszy i pewny sposób, który daje naprawdę dużo możliości i otrzymujemy hasło łatwe do wpisania:

  1. <?php
  2.  
  3. $haslo = substr(md5(uniqid(rand(), true)), rand(0,27), 5);
  4.  
  5. ?>


Masz pięcioliterowe hasło które jest losowym fragmentem trzydziestodwuznakowego losowego ciągu liter i liczb. Niemożliwe do odgadnięcia.
Majdan
Ja często, w podobnych funkcjach używam jeszcze time() dla bezpieczeństwa, aby nie było powtórzeń. biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.