Ako na správne porovnanie hesla?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
SontoEremo
Člen | 341
+
0
-

Zdravím…
Viem, že moje témy a otázky znejú hlúpo ale predsa sa musím niekoho spýtať…

Môj problém je v tom, že sa snažím porovnať heslo v DB zahashované týmto spôsobom:
Registrácia

public function passwordHasher($password, $salt = null)
	{
     	return crypt($password, $salt ?: '$2y$07$' . Strings::random(22));
    }

Pri logine používam na rozpoznanie zahashované hesla tento spôsob:

public function passwordLogin($password, $salt = NULL)
	{
		if($salt === NULL)
		{
			$salt = '$2y$07$' . Strings::random(22);
		}
		return crypt($password, $salt);
	}

dumpol som si pre porvnanie obe heslá
v DB je $2y$07$tdbnpny5epavdcnrlfi7hu0FM
A moje výsledky sú na heslo 123456:

"$2y$07$tdbnpny5epavdcnrlfi7hu0FM" (32) <---> OK

"$2y$07$dgwpauy9y3b44lt6p1x7hev8vIoXzlOikBmxaI7Sg8/zWJqHiLxli" (60) <---> Nechápem prečo je to rozdielne a Nerozumiem kde sa beria aj ta (60) ?

Sorry sa túto hlúpu tému
A všetky vopred ďakujem za pomoc.

Glottis
Člen | 129
+
0
-

cao, muzes se inspirovat tady http://www.openwall.com/phpass/

voda
Člen | 561
+
0
-

Nejlépe když použiješ nějakou knihovnu.

greeny
Člen | 405
+
0
-

Zaprve bych určitě ze dvou cryptovacích metod udělal jednu (zdvojení kódu), já dělám statickou metodu Authenticator::passwordHash($password, $salt).

Pak bych si v ní vždycky vydumpoval co dostane a co vrací, často se z toho zjistí, kde je problém.

David Matějka
Moderator | 6445
+
0
-

ze ty mas v databazi varchar(32)?

SontoEremo
Člen | 341
+
0
-

matej21 napsal(a):

ze ty mas v databazi varchar(32)?

Mal som aj varchar(60)!
Ale žiadny efekt

David Matějka
Moderator | 6445
+
0
-

ten prvni hash o delce 32 je totiz spatne, spravne ma mit delku 60. takze v databazi musis mit bezpodminecne varchar(60)